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

mik*_*725 6 javascript regex url filenames

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

以下是标准:

它需要""在以下场景中返回空字符串:

http://somedomain.com
http://www.somedomain.com
http://somedomain.com/
http://www.somedomain.com/
Run Code Online (Sandbox Code Playgroud)

并在以下场景中返回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
Run Code Online (Sandbox Code Playgroud)

我找到了这个正则表达式

[\w_.-]*?(?=[\?\#])|[\w_.-]*$这里开始

但它会somedomain.com在输入时返回http://somedomain.com.我无法弄清楚如何修改它以忽略域,当它没有/结束时.

如果使用正则表达式很难,我也会欣赏JavaScript解决方案.

Thanx提前.

bob*_*nce 20

假设您正在浏览器中编写脚本,那么您已经拥有了一个功能齐全的URL解析器,您可以利用它,而无需编写不可靠的不完整regexen.使用一个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
Run Code Online (Sandbox Code Playgroud)