关于javascript正则“反向引用”
2015-12-20 20:13
411 查看
前言:一直忙着找实习单位,足足有一个半月没有写过博客,也没有学习过,终于找到一个勉强合适的,还是赶紧加油吧,别被别人甩太远了!(话说这天好冷啊
)。
本来是在看着阿树博客里的jQuery规范的,不知道怎么搞得,稀里糊涂的就看到正则去了,把学到的东西总结一下:
首先先看下面这个例子:
再看这个例子
/(a\1)/在第一个括号中使用
基于这个原因,浏览器其实把下边的正则翻译成以下这样:
详细请看:http://segmentfault.com/q/1010000000580762
)。
本来是在看着阿树博客里的jQuery规范的,不知道怎么搞得,稀里糊涂的就看到正则去了,把学到的东西总结一下:
首先先看下面这个例子:
"abcd".match(/(a(bc)d)/); //result: ["abcd", "abcd", "bc"]这个例子说明看括号匹配顺序是按左括号计算的。(这是别人的理解,我的理解是匹配顺序是按从外到里从左到右计算的,每个反向引用都由一个编号或名称来标识,并通过“\编号”表示法进行引用,外面的组的编号靠前。也就是说引用分组是编号排列是从外到内编排。)
再看这个例子
'aaa'.match(/(a\1)/); //result: ['a'] 'aaaaaaa'.match(/(a\1\1\1\1\1)/); //result: ['a']
/(a\1)/在第一个括号中使用
\1引用是没有意义的,看来在chrome中的测试结果表明,无论在第n个括号中有几个
\n都会被忽略。(既从最外层括号往里层数)
'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"]
基于这个原因,浏览器其实把下边的正则翻译成以下这样:
'aaabbbcccdddeeefff'.match(/[abc]\1/g);//null 'aaabbbcccdddeeefff'.match(/([abc])\1/g);//["aa", "bb", "cc"] 'aaabbbcccdddeeefff'.match(/(([abc]))\1/g);//["aa", "bb", "cc"] 'aaabbbcccdddeeefff'.match(/(([abc]))\2/g);//["aa", "bb", "cc"] 'aaabbbcccdddeeefff'.match(/((([abc]))\2)\3/g);//["aaa", "bbb", "ccc"]
详细请看:http://segmentfault.com/q/1010000000580762
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- Java简单字符串插值实现
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享
- 如何创建对象以及jQuery中创建对象的方式
- IE8开发人员工具教程(二)