我需要从URL地址获取文件名。

这是标准:

在以下情况下,需要返回空字符串"":

http://somedomain.com
http://www.somedomain.com
http://somedomain.com/
http://www.somedomain.com/

并在以下情况下返回filename.php:
http://somedomain.com/filename.php?query
http://www.somedomain.com/filename.php?query
http://somedomain.com/filename.php#query
http://www.somedomain.com/filename.php#query

我发现这个正则表达式

here中的[\w_.-]*?(?=[\?\#])|[\w_.-]*$
但是,它在输入somedomain.com上返回http://somedomain.com。当末尾没有/时,我不知道如何修改它以忽略域。

如果正则表达式很难处理,那么我也会感谢JavaScript解决方案。

提前感谢。

最佳答案

假设您在浏览器中编写脚本,已经有一个功能齐全的URL解析器供您使用,而不必编写不可靠的不完整的正则表达式。使用HTMLAnchorElement读取类似location的属性hostpathnamesearchhash等:

var a= document.createElement('a');
a.href= 'http://somedomain.com/dirname/filename.php?query';
var filename= a.pathname.split('/').pop(); // filename.php

08-15 21:43