2

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

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 }”。

谢谢!
艾萨克

4

1 回答 1

1

使用(?:)而不是().

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

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

于 2012-06-29T08:46:25.617 回答