我需要从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
的属性host
,pathname
,search
,hash
等:
var a= document.createElement('a');
a.href= 'http://somedomain.com/dirname/filename.php?query';
var filename= a.pathname.split('/').pop(); // filename.php