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

时间:2013-10-10 09:37:54

标签: javascript regex

您好我需要将电影名称与扩展名匹配。

问题是路径既可以是unix也可以是windows,因此由/或\分隔允许。在文件名中,所以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。

3 个答案:

答案 0 :(得分:5)

您可以抓住最后\/后的最后内容,例如:

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

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

虽然你真的想强制进行扩展匹配:

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

答案 1 :(得分:4)

请尝试以下语法:

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"         --> ""

答案 2 :(得分:3)

积分转到此代码段的RegeBuddy图书馆:

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