如何在正则表达式中排除特定的uri

时间:2019-02-12 14:27:36

标签: regex pcre

我经常使用php这样的PRCE:

^/someurl/* 有很多网址,例如

/someurl/test
/someurl/something/{version}/{name}/{etc}

并且我需要排除这样的网址: ^/someurl/test/{version}/commands/*

{version} is a float number like 2.1.1 2.4

我已经尝试过了 ^((?!/someurl/test/[0-9].+/commands/*))

有效 但是我需要将此添加到单行中 ^/someurl/*不包括^((?!/someurl/test/[0-9].+/commands/*))

如何加入他们?谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用

^/someurl/(?!test/[0-9.]+/commands/).*

或更精确一点

^/someurl/(?!test/[0-9]+(?:\.[0-9]+)+/commands/).*

请参见regex demo

详细信息

  • ^/someurl/-字符串开头的/someurl/
  • (?!test/[0-9.]+/commands/)-当前位置的右边,不能是test/,不能是1+个数字或点,然后不能是/commands/子字符串(如果[0-9]+(?:\.[0-9]+)+使用它将匹配1个或多个数字,然后匹配1个或多个重复的点,后跟1+个数字)
  • .*-尽可能多的0个字符。