您好我需要将电影名称与扩展名匹配。
问题是路径既可以是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。
答案 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
}