前言: 本来是在看着阿树博客里的js规范的,不知道怎么搞得,稀里糊涂的就看到正则去了,把学到的东西总结一下。
首先先看下面这个例子:
1 | "abcd".match(/(a(bc)d)/); |
这个例子说明看括号匹配顺序是按左括号计算的。(这是别人的理解,我的理解是匹配顺序是按从外到里从左到右计算的,每个反向引用都由一个编号或名称来标识,并通过“\编号”表示法进行引用,外面的组的编号靠前。也就是说引用分组是编号排列是从外到内编排。)
再看这个例子
1 | 'aaa'.match(/(a\1)/); |
由这个例子可以看出/(a\1)/在第一个括号中使用\1引用是没有意义的,同时在chrome中的测试结果表明,无论在第n个括号中有几个\n都会被忽略。(既从最外层括号往里层数)
最后
基于上述两个例子的解读,咱们可以把下边的例子进行转换
1 | 'aaabbbcccdddeeefff'.match(/[abc]\1/g);//null |
可简化为
1 | 'aaabbbcccdddeeefff'.match(/[abc]\1/g);//null |