大的分组中存在小的分组时,小的分组是排在该大分组后面的分组,以此类推

 1     <script type="text/javascript">
 2         var str = "ABCDE";
 3         var reg = /(A+)((B|C|D)+)(E+)/gi;
 4         console.log(str.match(reg));//输出:["ABCDE"]
 5         console.log(reg.exec(str,'i'));//输出:["ABCDE", "A", "BCD", "D", "E"]
 6         console.log(RegExp.$1);//输出:"A"
 7         console.log(RegExp.$2);//输出:"BCD"
 8         console.log(RegExp.$3);//输出:"D"
 9         console.log(RegExp.$4);//输出:"E
10     </script>

https://www.cnblogs.com/caoruiy/p/4413370.html

反向引用:

在表达式计算完后如何利用分组呢?每个分组都被存放在一个特殊的地方以备将来使用。这些存储在分组中的特殊值,我们称之为方向引用。

反向引用是按照从左到右遇到的左括号字符的顺序进行创建和编号的。

例如:(a?(b?(c?)))将产生编号从1-3的三个反向引用。

反向引用有几种不同的使用方法。

原文地址:https://www.cnblogs.com/oklfx/p/8215750.html