正则表达式中的括号单位返回额外匹配

时间:2012-06-29 08:43:46

标签: javascript regex parentheses

我是正则表达式的新手并且一直在努力解决这个问题,并将我的问题抽象为以下问题:

var foo = "abc";
var array1 = match(/abc/);
var array2 = match(/a(b)c/);

array1当然只包含“abc”,但array2将同时包含“abc”和“b”。
为什么array2也会选择“b”?这对我来说是一个问题,因为我匹配像“{1 2a 3}”这样的大括号内的一些东西,像/\{(\d(|a|b)\s?)+\}/这样的正则表达式,结果数组返回空字符串和“3”以及所需的“{1 2a 3}”。

谢谢! 艾萨克

1 个答案:

答案 0 :(得分:1)

使用(?:)代替()

/{(?:\d(|a|b)\s?)+}/

当您使用()时,match也会返回匹配的群组。组是字符串中与正则表达式部分对应的部分,位于()中。