为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只名叫tom的猫 2019-03-21 18:15:34
代码如下:'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下运行。总结下结论:每个反向引用都由一个编号或名称来标识,并通过“\编号”表示法进行引用,外面的组的编号靠前。也就是说引用分组是编号排列是从外到内编排。基于此理论,就可以很好地解释代码的运行结果。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 297 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信