我是正则表达式的新手并且一直在努力解决这个问题,并将我的问题抽象为以下问题:
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}”。
谢谢! 艾萨克
答案 0 :(得分:1)
使用(?:)
代替()
。
/{(?:\d(|a|b)\s?)+}/
当您使用()
时,match
也会返回匹配的群组。组是字符串中与正则表达式部分对应的部分,位于()
中。