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