Получить имя файла из URL с помощью регулярных выражений или Javascript
мне нужно получить имя файла из URL-адреса.
вот критерии:
ему нужно вернуть пустую строку "" в следующих случаях:
http://somedomain.com
http://www.somedomain.com
http://somedomain.com/
http://www.somedomain.com/
и вернуть имя файла.php в следующих сценариях:
http://somedomain.com/filename.php?query
http://www.somedomain.com/filename.php?query
http://somedomain.com/filename.php#query
http://www.somedomain.com/filename.php#query
Я нашел регулярное выражение
[w_.-]*?(?=[?#])|[w_.-]*$ С здесь
однако он возвращает somedomain.com на входе http://somedomain.com. Я не могу понять, как изменить его, чтобы игнорировать домен, когда нет / в конце его.
если это трудно сделать с регулярными выражениями, я также буду признателен за решение JavaScript.
Thanx заранее.
3 ответов
предполагая, что вы пишете сценарий в браузере, уже есть полнофункциональный синтаксический анализатор URL для вас, чтобы воспользоваться, без необходимости писать ненадежные неполные regexen. Используйте HTMLAnchorElement для чтения locationсвойства host, pathname, search, hash etc.:
var a= document.createElement('a');
a.href= 'http://somedomain.com/dirname/filename.php?query';
var filename= a.pathname.split('/').pop(); // filename.php
это поместит имя файла в : [^:]+://[^/]+/?([^?#]*)
(стр. С. http://rentzsch.github.com/JSRegexTeststand/ - ваш друг для такого рода испытаний)
используйте эту измененную версию Reg ex: (добавлен \ / к существующему)
[\w_.-]*?(?=[\/\?\#])|[\w_.-]*$