正则表达式检查文件是否有任何扩展名

时间:2014-04-04 13:18:30

标签: regex path file-extension

我正在寻找一个正则表达式来测试文件是否有任何扩展名。我将其定义为:文件有一个扩展名,如果在最后一个"。" 之后没有斜杠。斜杠总是反斜杠。

我从这个正则表达式开始

.*\..*[^\\]

转换为

.*          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

这样做的正则表达式是什么?

3 个答案:

答案 0 :(得分:7)

您的解决方案几乎是正确的。使用此:

^.*\.[^\\]+$

Sample在rubular。

答案 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

Live Demo