在Javascript中使用Regex获取URL中的文件名

时间:2011-11-03 12:16:28

标签: javascript regex

我正在使用JavaScript尝试从URL获取文件名。

我可以使用它来获取它:

var fn=window.location.href.match(/([^/])+/g);
alert(fn[fn.length-1]); // get the last element of the array

但有更简单的方法(例如,不必使用fn [fn.length-1]

谢谢!

6 个答案:

答案 0 :(得分:3)

就个人而言,我尝试使用简单的字符串操作来完成这样的简单任务。它使代码更易读(对于不太熟悉RegEx的人)。

var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);

或者简单地说:

var filename = window.location.pathname.substring(window.location.pathname.lastIndexOf('/')+1);

其他信息

这并不重要,因为这个方法比RegEx更高效:http://jsperf.com/get-file-name

答案 1 :(得分:3)

在最后添加$,这样您才能获得最后一部分:

window.location.href.match(/[^/]+$/g);

答案 2 :(得分:1)

怎么样: window.location.href.match(/\/([^/]+)$/)[1];

答案 3 :(得分:0)

你可以使用.pop()来获取数组的最后一个元素;

alert(fn.pop());

答案 4 :(得分:0)

有一个jQuery插件可以轻松解析URL并提供对不同部分的访问。它做的一件事就是返回文件名。这是GitHub上的插件:

https://github.com/allmarkedup/jQuery-URL-Parser

我建议使用它并避免重新发明轮子。正则表达式是一个特别适用的编程领域。

答案 5 :(得分:0)

我建议也删除任何“#”或“?”字符串,所以我的答案是:

var fn = window.location.href.split('/').pop().replace(/[\#\?].*$/,'');
alert(fn);

split('/').pop()删除路径
replace(/[\#\?].*$/,'')替换“#”或“?”直到$由空字符串结尾