Регулярное выражение - выделить последнюю и единственную директорию из URL
Требуется составить регулярное выражение, которое выделяло бы последнюю и единственную директорию из URL. Пример:
https://www.site.ru/dir1 или https://www.site.ru/dir1 - находит "dir1"
а
https://www.site.ru/dir1/dir2 или https://www.site.ru/dir1/dir2/dir3 и т.д. - ничего не находит.
Моя попытка: ^.+//[^/]+/([^/]+)/?$
Спасибо заранее.
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Так как не предоставлено достаточно примеров и информации о входных данных, составил наиболее универсальное выражение - принимает как отдельные ссылки, так и находящиеся в тексте:
let rExp = /(?:^|\s)(?:\S*?\/{2})?[^\/]+?\/([^\s\/]+)(?=\/?(?:$|\s))/g;
let sTxt = `
+ https://www.site.ru/dir1 или https://www.site.ru/dir1/
+ www.site.ru/dir1 или www.site.ru/dir1/
+ ftp://site.ru/dir1
+ //site.ru/dir1
- https://www.site.ru/dir1/dir2/dir3 или https://www.site.ru/dir1/dir2/
- www.site.ru/dir1/dir2/dir3 или www.site.ru/dir1/dir2/
- ftp://site.ru/dir1/dir2
- //site.ru/dir1/dir2/dir3
`;
for (let m of sTxt.matchAll(rExp)) {
console.log(m[1]);
}