正则表达式扩展和语言

Fro*_*oxz 7 javascript php regex jquery

我期待验证一些文件名.但无法弄清楚正确的正则表达式文件名可以是任何东西,但需要检查文件名是否以

  1. _下划线
  2. en或ru或cy(国家代码2字母)
  3. .(点)
  4. 扩展(jpeg,jpg,mp4,png,gif)

所以档案

my_file_dummy_name.jpeg - not valid
my_file_dummy_name_en.jpeg - valid
Run Code Online (Sandbox Code Playgroud)

对于现在我尝试了这个(并且正在工作,但也许有更好的解决方案)

/(\_\w.\.\w+)/g
Run Code Online (Sandbox Code Playgroud)

多一个:

/(\_[a-z]{2}\.[a-z]{3,4})/g
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 10

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

例如,以下正则表达式

/(\_\w{2}\.\w+)/g
Run Code Online (Sandbox Code Playgroud)

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

试试这个正则表达式:

_(en|ru|cy)\.(jpeg|jpg|mp4|png|gif)$
Run Code Online (Sandbox Code Playgroud)

在这里演示:

Regex101