JS学习笔记——如何在正则表达式中控制捕获
2013-02-18 11:30
267 查看
本篇学习笔记内容源于《Secrets of the JavaScript Ninja》
在正则表达式中,圆括号()有这双重功能,第一:为一些操作归类分组(与程序表达式中的用法差不多),第二:用于捕获信息。在一般的应用中,这两种功能并不冲突,但当正则表达式中的圆括号有些多时,就会造成不必要的捕获操作,从而影响真正需要捕获的信息操作。
例如:var temp = /((xirang-)+)blog/;
上面的正则表达式主要描述为:在blog前,允许出现一次或者多次“xirang-“。当然,为了捕获blog前面的所有信息,我们在(xirang)+的外部又加了一对圆括号用于实现捕获操作。此时我们可以看到,内部的圆括号用于将xirang-归类分组,以便其能够以整体的形式运用+操作符,但恰恰是这对圆括号影响了我们本身想要的单个捕获的操作逻辑(只想要一次捕获,即blog前的信息)。
如何取消内部圆括号的捕获功能,使其只具有聚类分组功能呢,请见下面的操作(在圆括号一开始运用?:操作符)
var temp = /((?:xirang-)+)blog/;
上面的表达式,只将外面的圆括号用于捕获操作,内部的圆括号只具有聚类分组功能,这与我们第一开始的想法一致了。
在正则表达式中,圆括号()有这双重功能,第一:为一些操作归类分组(与程序表达式中的用法差不多),第二:用于捕获信息。在一般的应用中,这两种功能并不冲突,但当正则表达式中的圆括号有些多时,就会造成不必要的捕获操作,从而影响真正需要捕获的信息操作。
例如:var temp = /((xirang-)+)blog/;
上面的正则表达式主要描述为:在blog前,允许出现一次或者多次“xirang-“。当然,为了捕获blog前面的所有信息,我们在(xirang)+的外部又加了一对圆括号用于实现捕获操作。此时我们可以看到,内部的圆括号用于将xirang-归类分组,以便其能够以整体的形式运用+操作符,但恰恰是这对圆括号影响了我们本身想要的单个捕获的操作逻辑(只想要一次捕获,即blog前的信息)。
如何取消内部圆括号的捕获功能,使其只具有聚类分组功能呢,请见下面的操作(在圆括号一开始运用?:操作符)
var temp = /((?:xirang-)+)blog/;
上面的表达式,只将外面的圆括号用于捕获操作,内部的圆括号只具有聚类分组功能,这与我们第一开始的想法一致了。
相关文章推荐
- 2016.06.15廖雪峰JS__学习笔记(正则表达式)__P6
- js 正则表达式学习笔记之匹配字符串
- JS 正则表达式(学习笔记2)匹配网址url参数
- js正则表达式学习笔记
- js的正则表达式学习笔记
- JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
- 重温JavaScript中的正则表达式 js学习笔记
- JS 正则表达式(学习笔记2)匹配网址url参数
- JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
- JS 正则表达式的相关方法(正则学习笔记1)
- JS 正则表达式的相关方法(正则学习笔记1)
- java正则表达式学习笔记之命名捕获
- 韩顺平 javascript教学视频_学习笔记34_js正则表达式详解
- JS学习笔记——正则表达式在replace()函数中的小技巧
- 【记录】JS正则表达式(学习笔记2)现学现卖还帮美女解决了个问题。
- js 正则表达式 学习笔记
- 【记录】JS正则表达式的相关方法(正则学习笔记1)
- JS学习笔记5 正则表达式
- 【js学习笔记-061】正则表达式
- 【JS学习笔记】正则表达式