javascript - 使用正则表达式或 Javascript 从 URL 获取文件名

标签 javascript regex url filenames

我需要从 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 的属性hostpathnamesearchhash等:

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/

相关文章:

javascript - 如何使用 for 循环掷多个骰子?

javascript - 使用 javascript 检测适当的按钮

python - 带有 pytest 标记的 python 脚本的 Sphinx 文档

ASP.NET url MAX_PATH 限制

url - Symfony2.1 使用带有方法 GET 的表单

javascript - jquery.scrollTo — 页面加载时滚动

javascript - 自定义 Angular 指令、控制台日志、DOM 更新、屏幕不

regex - 学习正则表达式

javascript - 添加正则表达式规则以删除现有表达式上的 "www."

internet-explorer - iframe 中的 Qlikview - 从不同的域登录而不要求凭据