我想匹配不拥有abc
,def
或ghi
的字符串。相反的是容易的:
/(abc|def|ghi)/
如何扭转这种局面?我不想
/(^abc|^def|^ghi)/
因为那里会有更多的“逻辑”。 (如果这甚至是它的作用。)
如何反转整组比赛(或其他任何名称)?
(我试图在http://regex.alf.nu/上击败5.)
答案 0 :(得分:9)
使用否定lookaead:
/^(?!.*?(abc|def|ghi)).*$/
答案 1 :(得分:3)
您需要定义捕获组,包括开头(^
)和字符串结尾($
),否则您将得到误报匹配:
/^((?!(abc|def|ghi)).)*$/
这将匹配:
这将不匹配:
在此处查看此行动:http://regex101.com/r/yI3tF4
答案 2 :(得分:3)
http://regex.alf.nu/上的5.解决方案:^((?!(.)(.)\3\2).)*$
说明:Regular expression to match a line that doesn't contain a word?
答案 3 :(得分:0)
使用否定前瞻:
/^(?!.*abc)(?!.*def)(?!.*ghi)/
/^(?!.*(abc|def|ghi))/