正则表达式匹配包含两个字符串之一的路径

Regex to match path containing one of two strings

正则表达式匹配第三段中的两个字符串之一,即在伪代码中:

/content/au/(boomer or millenial)/...

匹配示例

/content/au/boomer 
/content/au/boomer/male/31 
/content/au/millenial/female/29/M 
/content/au/millenial/male/18/UM

不匹配示例

/content/au
/content/nz/millenial/male/18/UM
/content/au/genz/male

我试过了,但没有用:

^/content/au/(?![^/]*/(?:millenial|boomer))([^/]*)

您可以使用以下正则表达式 DEMO

content/au/(?:boomer|millenial)

负前瞻是怎么回事?这是一个简单的正匹配。

^/content/au/(?:millenial|boomer)(?:/|$)

最后一组表示匹配后需要跟斜杠或什么都不跟,以便排除以备选方案之一开头但包含其他文本的路径。

不要使用前瞻;只需使用简单的交替 millenial|boomer 然后是单词边界:

^/content/au/(?:millenial|boomer)\b(?:/.*)?

live demo

您可能也应该正确拼写 millennial(两个“n”,而不是一个)。