我正在研究验证一些文件名。但是无法弄清楚正确的正则表达式 文件名可以是任何内容,但需要检查文件名是否以
结尾so file
my_file_dummy_name.jpeg - not valid
my_file_dummy_name_en.jpeg - valid
现在我尝试了这个(并且正在运行,但也许有更好的解决方案)
/(\_\w.\.\w+)/g
还有一个:
/(\_[a-z]{2}\.[a-z]{3,4})/g
答案 0 :(得分:10)
原始正则表达式的问题在于,虽然它与您想要允许的文件名相匹配,但它也会匹配您不想要的内容。
例如,以下正则表达式
/(\_\w{2}\.\w+)/g
将匹配文件my_file_dummy_name_de.mpeg
,这是来自德国的视频文件。显然,我们不希望首先看到这一点。
试试这个正则表达式:
_(en|ru|cy)\.(jpeg|jpg|mp4|png|gif)$
在这里演示:
答案 1 :(得分:2)
如果您希望正则表达式为您完成所有检查,那么可以采用更严格的方法:
/_(en|ru|cy)\.(jpeg|jpg|mp4|png|gif)$/
这样可以确保您提到的所有限制。此外,不需要g
lobal标志,因为我们只对字符串的结尾感兴趣(这就是我放置EOL锚点$
)的原因。但是,如果文件名中存在混合大小写的可能性,您可以添加i
gnore案例标记。