正则表达式在javascript中匹配反向组

时间:2013-12-20 18:53:46

标签: javascript regex

我想匹配拥有abcdefghi的字符串。相反的是容易的:

/(abc|def|ghi)/

如何扭转这种局面?我不想

/(^abc|^def|^ghi)/

因为那里会有更多的“逻辑”。 (如果这甚至是它的作用。)

如何反转整组比赛(或其他任何名称)?

(我试图在http://regex.alf.nu/上击败5.)

4 个答案:

答案 0 :(得分:9)

使用否定lookaead:

/^(?!.*?(abc|def|ghi)).*$/

答案 1 :(得分:3)

您需要定义捕获组,包括开头(^)和字符串结尾($),否则您将得到误报匹配:

/^((?!(abc|def|ghi)).)*$/

这将匹配:

  • 鲍勃

这将匹配:

  • ABC
  • DEF
  • GHI
  • bobabc
  • abcjoe

在此处查看此行动:http://regex101.com/r/yI3tF4

答案 2 :(得分:3)

答案 3 :(得分:0)

使用否定前瞻:

/^(?!.*abc)(?!.*def)(?!.*ghi)/
/^(?!.*(abc|def|ghi))/