引用 https://www.jb51.net/article/79309.htm
? 非捕获
:匹配
=是
!不是
var reg, str = "kid is a doubi"
reg = /(kid is a (?:doubi))/
//非捕获性
reg.test(str)
RegExp.$1 // kid is a doubi
//doubi依然被外面的引用捕获到
reg = /(kid is a (?=doubi))/
reg.test(str)
RegExp.$1 // kis is a
//前瞻性无法被外层引用
可见,非捕获型分组匹配到的串,仍会被外层的捕获型分组捕获到,但前瞻型却不会。当你需要参考后面的值,又不想连它一起捕获时,前瞻型分组就派上用场了。