如何理解javascript正则“反向引用”

代码如下:


'aaabbbcccdddeeefff'.match(/[abc]\1/g);//null

'aaabbbcccdddeeefff'.match(/([abc])\1/g);//["aa", "bb", "cc"]

'aaabbbcccdddeeefff'.match(/(([abc])\1)\1/g);//["aa", "bb", "cc"]

'aaabbbcccdddeeefff'.match(/(([abc])\1)\2/g);//["aa", "bb", "cc"]

'aaabbbcccdddeeefff'.match(/((([abc])\1)\2)\3/g);//["aaa", "bbb", "ccc"]

第一行可以验证出,反向引用针对的是分组。

第二三行结果,符合预期。

后面的就不懂了。。。

求解释,为什么??这个分组,针对的是嵌套分组,还是平行分组(/()()()/)?


按我的理解,第四行结果应当是:["aaaa", "bbbb", "cccc"],但给的测试串没有四个的,所以应当匹配无果,null。


ps:运行结果都是在chrome版本 35.0.1916.153 m下运行。


总结下结论:


每个反向引用都由一个编号或名称来标识,并通过“\编号”表示法进行引用,外面的组的编号靠前。也就是说引用分组是编号排列是从外到内编排。


基于此理论,就可以很好地解释代码的运行结果。


一只名叫tom的猫
浏览 298回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript