正则表达式排除特定字符串?

时间:2014-09-19 23:54:27

标签: regex

我正在尝试编写与picture.jpgpicture.png匹配的正则表达式,但不是picture.gif

目前我有:

^(picture)+[.]+(jpg|png)

我尝试追加(?!gif),似乎没有这个伎俩。

如何排除.gif的文件类型?

2 个答案:

答案 0 :(得分:0)

^picture\.(?:jpg|png)$

这是Demo

如果您特别想要排除.gif但匹配任何其他扩展程序,请使用否定后备:

^(picture\.[\w]{3}(?<!\.gif))$

Demo

答案 1 :(得分:0)

当您匹配项目列表时,您不必排除不在该列表中的项目。想一想。如果你想匹配&#34; a&#34;,&#34; b&#34;和&#34; c&#34;那么就没有理由确保&#34; d&#34;也不匹配。它永远不会匹配,因为这不是你想要匹配的东西。

/^picture\.(?:jpg|png)$/

这将匹配以下文件名:

  1. 以&#34;图片&#34;
  2. 开头
  3. 有一个&#34;。&#34;之后
  4. 并被&#34; jpg&#34;终止或&#34; png&#34;
  5. (?:)non-capturing group

    如果你还想匹配&#34; jpeg&#34;然后你可以用这个:

    /^picture\.(?:jpe?g|png)$/
    

    e?只是意味着&#34; e&#34;是允许但不是必需的。