如何从正则表达式中排除一个匹配另一个规则的匹配?

时间:2017-07-26 20:26:50

标签: regex

我正在尝试编写重定向规则,但我不知道如何排除某个特定情况

我需要重定向所有包含"图像"在网址中以" / images"开头的网址,但" / images"不应该匹配。

这匹配任何以" images"

开头的内容
^(images)[/](.*)$/i

这不包括" / images"

 ^[^\/](images)[/](.*)$/i

这匹配" / images"

之前具有更多细分的任何内容
 ^.*(images)[/](.*)$/i

如何将这三者结合起来以便匹配

  

/asdf/images/sadf.png

     

图像/ asdf.png

但这个不是

  

/images/sadf.png

2 个答案:

答案 0 :(得分:1)

试试这个:

^(?!/images\b).*\bimages\b.*

使用\b(字边界)会停止匹配unimagestrate等输入。

答案 1 :(得分:0)

试试这个:

/^(?!\/images).*images\/.*$/

这将执行以下操作:
从行首开始^ (?!\/images)如果第一件事是" / images"
,则不匹配 .*匹配任何字符(可选) - 如果您的路线中不存在某些字符,则可以限制此项 images\/匹配" images /"的任何实例;这与先前的断言并不矛盾