我正在寻找一个正则表达式来测试文件是否有任何扩展名。我将其定义为:文件有一个扩展名,如果在最后一个"。" 之后没有斜杠。斜杠总是反斜杠。
我从这个正则表达式开始
.*\..*[^\\]
转换为
.* Any char, any number of repetitions
\. Literal .
.* Any char, any number of repetitions
[^\\] Any char that is NOT in a class of [single slash]
这是我的测试数据(不包括##,这是我的评论)
\path\foo.txt ## I only want to capture this line
\pa.th\foo ## But my regex also captures this line <-- PROBLEM HERE
\path\foo ## This line is correctly filtered out
这样做的正则表达式是什么?
答案 0 :(得分:7)
答案 1 :(得分:3)
我不会在这里使用正则表达式。我split
和/
.
{/ 1}}。
var path = '\some\path\foo\bar.htm',
hasExtension = path.split('\').pop().split('.').length > 1;
if (hasExtension) console.log('Weee!');
答案 2 :(得分:2)
您还可以尝试更简单的方法:
(\.[^\\]+)$
<强>详细信息:强>
$ = Look from the end of string
[^\\]+ = Any character except path separator one or more time
\. = looks for <dot> character before extension