正则表达式扩展和语言

时间:2016-07-28 11:38:04

标签: javascript php jquery regex

我正在研究验证一些文件名。但是无法弄清楚正确的正则表达式 文件名可以是任何内容,但需要检查文件名是否以

结尾
  1. _ underscore
  2. en或ru或cy(国家代码2字母)
  3. 。 (点)
  4. 扩展(jpeg,jpg,mp4,png,gif)
  5. 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
    

2 个答案:

答案 0 :(得分:10)

原始正则表达式的问题在于,虽然它与您想要允许的文件名相匹配,但它也会匹配您不想要的内容。

例如,以下正则表达式

/(\_\w{2}\.\w+)/g

将匹配文件my_file_dummy_name_de.mpeg,这是来自德国的视频文件。显然,我们不希望首先看到这一点。

试试这个正则表达式:

_(en|ru|cy)\.(jpeg|jpg|mp4|png|gif)$

在这里演示:

Regex101

答案 1 :(得分:2)

如果您希望正则表达式为您完成所有检查,那么可以采用更严格的方法:

/_(en|ru|cy)\.(jpeg|jpg|mp4|png|gif)$/

这样可以确保您提到的所有限制。此外,不需要g lobal标志,因为我们只对字符串的结尾感兴趣(这就是我放置EOL锚点$)的原因。但是,如果文件名中存在混合大小写的可能性,您可以添加i gnore案例标记。