非捕获性分组,通常由一对括号加上 ?:
加上子表达式组成,非捕获性分组不会创建反向引用,就好像没有括号一样。如下:
var color = "#808080"; var output = color.replace(/#(?:\d+)/,"$1"+"~~"); console.log(RegExp.$1);// "" console.log(output);// $1~~
以上,(?:\d+) 表示一个非捕获性分组, 由于分组不捕获任何内容,所以 RegExp.$1
就指向了空字符串.
同时,由于 $1
的反向引用不存在, 因此它被当成了普通的字符串。