var url = "http://example.com/index.htm";
var filename = url.match(/([^\/]+)(?=\.\w+$)/)[0];
Давайте рассмотрим регулярное выражение:
[^\/]+ # one or more character that isn't a slash
(?= # open a positive lookahead assertion
\. # a literal dot character
\w+ # one or more word characters
$ # end of string boundary
) # end of the lookahead
Это выражение будет собирать все символы, которые не являются косой чертой, за которыми сразу же следуют (благодаря lookahead )с помощью расширения и конца строки - или, другими словами, всего после последнего слеша и до расширения.
В качестве альтернативы, вы можете сделать это вообще без регулярных выражений, найдя положениепоследний /
и последний .
, используя lastIndexOf
и получая substring
между этими точками:
var url = "http://example.com/index.htm";
var filename = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("."));