我知道这似乎是一个常见的问题,但无法摆脱我的问题搜索。 我需要一个正则表达式,它只匹配不以一组指定单词开头并被/包围的字符串。 例如:
/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错了,我会很感激。 请不要怪我:) 感谢。
答案 0 :(得分:2)
你需要在负面预测中为这两者添加结尾斜杠,而不是在外面:
^/(?!(harry|tom)/).*
不添加斜杠,将与tom
中的tomas
匹配,否则前瞻不会满足。
答案 1 :(得分:1)
尝试:
^(?!/(harry|tom)/).*
为什么数字1错误:前瞻应该确保harry
或tom
后跟斜杠。
为什么数字2错了:忽略前瞻;请注意,该模式试图匹配字符串开头的两个斜杠。