使用 Javascript 中的正则表达式从 URL 中获取文件名

4

我将使用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个回答

4
在末尾添加$,这样您只会得到最后一部分。
window.location.href.match(/[^/]+$/g);

3

就个人而言,我尝试使用简单的字符串操作来处理像这样的简单任务。这样可以使代码更易于阅读(对于不太熟悉正则表达式的人来说)。

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

或者简单地说:
var filename = window.location.pathname.substring(window.location.pathname.lastIndexOf('/')+1);

附加信息

虽然这只是一些微不足道的内容,但这种方法比正则表达式更有效率:http://jsperf.com/get-file-name


1
如何看待以下代码: window.location.href.match(/\/([^/]+)$/)[1];


0

我建议同时删除任何'#'或'?'字符串,因此我的答案是:

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

split('/').pop() 移除路径
replace(/[\#\?].*$/,'') 替换从'#'或'?'到结尾$的内容为空字符串


0
你可以使用 .pop() 方法获取数组的最后一个元素;
alert(fn.pop());

0

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

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

我建议使用它,避免重复造轮子。正则表达式是编程中特别适用该方法的一个领域。


从URL中提取文件名似乎有些过度了。 - James Hill
如果您已经在使用jQuery,并且经常处理URL,我认为您可以节省的时间超过缺点。 - Slavo
我能理解那个观点,但是OP甚至没有标记jQuery。 - James Hill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接