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

问题描述 投票:1回答:1

我有一个像这个PRICE使用PHP的正则表达式:

^/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/*))

如何加入他们?谢谢。

regex pcre
1个回答
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个字符。
© www.soinside.com 2019 - 2024. All rights reserved.