如何使用javascript/jquery从url中提取文件名?

33 javascript regex jquery

某个变量可能包含相对路径或绝对路径.无论哪种方式,我需要能够从变量中提取文件名:

http://www.somesite.com/dir1/dir2/filename.gif
/dir1/dir2/filename.gif
Run Code Online (Sandbox Code Playgroud)

目录结构也是任意的.所以基本上给出了上面的url(使用arbirtrary目录结构)我需要拉'filename.gif'.提前致谢

Gre*_*ire 57

var index = yourstring.lastIndexOf("/") + 1;
var filename = yourstring.substr(index);
Run Code Online (Sandbox Code Playgroud)

  • 我不知道,但人类更容易理解 (8认同)
  • 我得到`/ filename.gif`而不是`filename.gif`.在调用substr之前,索引应该加1. (2认同)

Rod*_*igo 26

更短的方式

var filename = window.location.href.substr(window.location.href.lastIndexOf("/")+1);
Run Code Online (Sandbox Code Playgroud)


CMS*_*CMS 11

var filename = url.match(/.*\/(.*)$/)[1];
Run Code Online (Sandbox Code Playgroud)


ras*_*ash 8

var filename= url.split('/').pop()
Run Code Online (Sandbox Code Playgroud)


Tho*_*ith 6

我会使用正则表达式.

[^/]*$
Run Code Online (Sandbox Code Playgroud)

它选择最后一个斜杠后的所有内容直到结束.您可以展开它以单独选择扩展名:

/([^/]*?)(\.[^\./]*)?$
Run Code Online (Sandbox Code Playgroud)


kfl*_*nce 5

var path = window.location.pathname;
var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1];
Run Code Online (Sandbox Code Playgroud)

如果您不希望查询字符串成为文件名的一部分(您可能不这样做),请使用此选项.


Lor*_*nVS 1

使用正则表达式,沿着这些思路应该可以解决问题:

[^/]+\.[^/]+
Run Code Online (Sandbox Code Playgroud)

尽管这并不能涵盖所有可能的情况,但它应该更适合大多数情况。您可以使用这些:

var url = window.location.href;
var regex = new RegExp("[^/]+\.[^/]+");
var fileName = regex.exec(url);
Run Code Online (Sandbox Code Playgroud)

希望有帮助

  • 没有。这会导致匹配 `["http:"]`。 (2认同)