Javascript正则表达式匹配带扩展名的文件名

Javascript regex match filename with extension

您好,我需要将文件名与扩展名匹配。

问题是路径可以同时是UNIX和Windows,因此由/或分开也可以是UNIX允许的。在文件名中,也应该匹配t.est.txt。

我的代码:

1
2
3
4
var regex = new RegExp('[\\/]?([/\w+.]+/\w+)/\s*$');
var value = this.attachment.fileInput.dom.value;
console.log(value.match(regex));
console.log(regex.exec(value));

这个regex在ruburula很好用。但由于某种原因,比如chrome和firefox不匹配任何字符串,返回空值。


你只需抓住最后一个\/后面的任何东西,例如:

1
var file = str.match(/[^\\/]+$/)[0];

(请记住,文件并不总是需要扩展名)

但是,如果您真的想强制扩展匹配:

1
var file = str.match(/[^\\/]+\.[^\\/]+$/)[0];


请尝试以下语法:

1
var filename = (value.match(/[^\\/]+\.[^\\/]+$/) || []).pop();

对于以下示例,它应该可以正常工作:

1
2
3
4
"path/to/file.ext"     -->"file.ext"
"path\\to\\file.ext"   -->"file.ext"
"path/to/file.ext.txt" -->"file.ext.txt"
"path/to/file"         -->""


此代码段的学分将转到Regebuddy的库:

1
2
3
4
5
6
7
if (/[^\\\/:*?"<>|

]+$/im.test(js)) {
    // Successful match
} else {
    // Match attempt failed
}