Получить имя файла из 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_.-]*$