捕获型(xxx)示例:
var str="sjds24324abcabc1234";
var reg=/(abc){2}/;
console.log(str.match(reg));
//输出结果为Array[0] :"abcabc"; Array[1]:"abc";
非捕获型(?:xxx)示例:
var str="sjds24324abcabc1234";
var reg=/(?:abc){2}/;
console.log(str.match(reg))
//输出结果为Array[0] :"abcabc";
两组示例对比可知:
捕获型分组会把每个捕获分组所匹配的内容暂且存储在某个地方,以便下次使用。在JavaScript中,捕获性分组所匹配的内容都是以$1,$2,$3…的格式保存的。因此捕获型分组会有性能上的损失。
非捕获型分组只会返回一个不含各个分组匹配(不含字串)的结果。所以会提高匹配速度。