0

我知道这似乎是一个常见的问题,但我无法摆脱我的问题,尽管搜索。我需要一个正则表达式,它只匹配不以指定的一组单词开头并被 / 包围的字符串。例子:

/harry/white
/sebastian/red
/tom/black
/tomas/green

我不想要以 /harry/ 和 /tom/ 开头的字符串,所以我希望

/harry/white     NO
/sebastian/red   YES
/tom/black       NO
/tomas/green     YES

1) ^/(?!(harry|tom)).*    doesn't match /tomas/green
2) ^/(?!(harry|tom))/.*   matchs nothing
3) ^/((harry|tom))/.*     matchs the opposite

什么是正确的正则表达式?如果有人向我解释为什么 1 和 2 是错误的,我将不胜感激。请不要怪我:) 谢谢。

4

2 回答 2

2

您需要在负前瞻内部而不是外部为它们添加结尾斜杠:

^/(?!(harry|tom)/).*

不添加斜线,将匹配tomin tomas,并且负前瞻将不满足。

于 2013-11-13T17:40:10.757 回答
1

尝试:

^(?!/(harry|tom)/).*

为什么数字 1 是错误的:前瞻应该确保harryortom后跟一个斜杠。

为什么数字 2 是错误的:忽略前瞻;请注意,该模式试图匹配字符串开头的两个斜杠。

于 2013-11-13T17:40:00.703 回答