Javascript 正则表达式将文件名与扩展名匹配

Javascript regex match filename with extension

本文关键字:扩展名 文件名 正则表达式 Javascript      更新时间:2023-09-26

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

问题是路径可以同时是 unix 和窗口,因此由/或 '' 分隔,unix 也允许 . 在文件名中,所以 t.est.txt 也应该匹配。

我的代码 :

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

这个正则表达式在 rubular 中工作正常。但是由于某种原因,即chrome和Firefox与任何字符串都不匹配并返回null。

您可以在最后'/之后抓取任何内容,例如:

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

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

虽然如果你真的想强制扩展匹配:

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

请尝试以下语法:

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

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

"path/to/file.ext"     --> "file.ext"
"path''to''file.ext"   --> "file.ext"
"path/to/file.ext.txt" --> "file.ext.txt"
"path/to/file"         --> ""

Credits 转到 RegeBuddy 的库以获取此片段:

if (/[^'''/:*?"<>|'r'n]+$/im.test(js)) {
    // Successful match
} else {
    // Match attempt failed
}