我需要从 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
我找到了这个正则表达式
[\w_.-]*?(?=[\?\#])|[\w_.-]*$
来自 here
但是它在输入 http://somedomain.com
时返回 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
关于javascript - 使用正则表达式或 Javascript 从 URL 获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549654/