分组有四种类型: 见案例
捕获型 - ()
非捕获型 - (?:)
正向前瞻型 - (?=)
反向前瞻型 - (?!)
捕获性分组() : 就是捕获分组所匹配的内容暂且存储在某个地方,以便下次使用,捕获性分组以(...)表示,有些地方将取得捕获性分组所匹配结果的过程称之为"反向引用" [ 测试demo中有针对这个的专门案例 ]
非捕获性分组 不捕获分组所匹配的内容,当然也就得不到匹配的结果,非捕获性分组以 (?:) 表示,在一些只需要分组匹配但是并不需要得到各个分组匹配的结果时,使用非捕获性分组可以提高匹配速
最新体会: $1, $2 一般只出现在分组匹配中,得到分组中对应的每一个匹配对象
var str = '20161116';
var re = /(\d{4})(\d{2})(\d{2})/gi;
var res = str.replace( re,'$1-$2-$3')
alert(res); // 2016-11-16