如何从使用JavaScript / jQuery的URL拉文件名?

某个variables可能包含相对path或绝对path。 无论哪种方式,我需要能够从variables拉文件名:

dir1/dir2/filename.gif 

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

 var index = yourstring.lastIndexOf("/") + 1; var filename = yourstring.substr(index); 

更短的方法

 var filename = window.location.href.substr(window.location.href.lastIndexOf("/")+1); 
 var filename = url.match(/.*\/(.*)$/)[1]; 

我会使用一个正则expression式。

 [^/]*$ 

它会select最后一个斜杠后的所有内容,直到结束。 您可以扩展它以分别select扩展名:

 /([^/]*?)(\.[^\./]*)?$ 
 var path = window.location.pathname; var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1]; 

如果你不希望你的查询string是你的文件名的一部分(你可能不这样做)的情况下使用它。

 var URL = window.location.pathname; // Gets page name var page = URL.substring(URL.lastIndexOf('/') + 1); alert(page); 
 var filename= url.split('/').pop() 

对于你的例子,子串search可能是你最好的select。

但是,如果你的URI真的很复杂,你可以试试Steven Levithan的parseUri

 parseUri(uri).file; 

它有2个模式,每个都有它的怪癖的份额,所以一定要看看演示 。

 // Extract filename from current page. var filePath = window.location.pathname; var fileName = filePath.substr(urlPath.lastIndexOf("/") + 1); 

使用正则expression式,沿着这些线应该做的伎俩:

 [^/]+\.[^/]+ 

尽pipe这并不能涵盖所有可能的情况,但对于大多数情况来说,这应该是比较合适的。 你可以使用这些:

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

希望有所帮助

 var filename = /[^\\\/:*?"<>|\r\n]+$/i.exec(window.location.href)[0]; 
  var pathnameArray = window.location.pathname.split("/"); var nameOfFile = pathnameArray[pathnameArray.length -1]; 

当考虑制作一个数组而不是使用别人提到的substr时,可能会有一些开销我不知道。 所以也许这不是一个好的答案,而是解决同样问题的另一种方法。

谢谢山姆,似乎工作,但你有我的朋友错字:

 // Extract filename from current page. var filePath = window.location.pathname; var fileName = filePath.substr(filePath.lastIndexOf("/") + 1); 

如果你的url是这样的:

 yourdomain.com/app_dev.php yourdomain.com/app_dev.php/article/2 

而你只想拉文件名(/app_dev.php),以便你可以链接到你的主页使用这个:

 var filename = window.location.pathname.substr(0, window.location.pathname.indexOf("/", 1)); window.location = filename;