JavaScript正则表达式之分组匹配反向引⽤语法
元字符:(pattern) 作⽤:⽤于反复匹配的分组
属性$1~$9 如果它(们)存在,⽤于得到对应分组中匹配到的⼦串
\1或$1 ⽤于匹配第⼀个分组中的内容
\2或$2 ⽤于匹配第⼀个分组中的内容
...正则匹配到第一个关键字就停止
\9或$9 ⽤于匹配第⼀个分组中的内容
⽤法⽰例
var reg = /(A+)((B|C|D)+)(E+)/gi;//该正则表达式有4个分组
//对应关系
//RegExp.$1 <-> (A+)
/
/RegExp.$2 <-> ((B|C|D)+)
//RegExp.$3 <-> (B|C|D)
//RegExp.$4 <-> (E+)
以上的代码也同时给出了$1~$9的⽤法
$1~$9是正则表达式预定义的静态属性,通过引⽤
分组嵌套关系说明
上述代码也可以说明分组的嵌套关系
//测试环境 Chrome浏览器
var str = "ABCDE";
var reg = /(A+)((B|C|D)+)(E+)/gi;
str.match(reg);//输出:["ABCDE"]
<(str,'i');//输出:["ABCDE", "A", "BCD", "D", "E"]
RegExp.$1;//输出:"A"
RegExp.$2;//输出:"BCD"
RegExp.$3;//输出:"D"
RegExp.$4;//输出:"E"
这样就可以很明⽩的看出分组的嵌套关系了
总结来说:⼤的分组中存在⼩的分组时,⼩的分组是排在该⼤分组后⾯的分组,以此类推
------------------------------------------------------------------------------------------------------------------------------
第⼆部分
这部分主要讲解类似于"\1"这个东西的⽤法
分组匹配之反向引⽤
语法
元字符 \1~\9 作⽤:⽤来表⽰前⾯以匹配的字符或分组的⼀个引⽤
⽤法⽰例
参考⽂章:
上⾯说的可能有些拗⼝,下⾯给⼀个例⼦:
//⼀般情况,当我们想匹配任意两个相同的字符(复杂⼀点就是两个相同的分组)时,往往可以借助下⾯的写法
//说明:
//(\w)⽤来匹配任何除了换⾏和制表符的字符, ⽽\1是对(\w)的⼀个引⽤, 所以你可以理解成: (\w)\1 就是(\w)(\w)
//但是,
//(\w)\1 和 (\w)(\w)的不同之处在于, (\w)(\w)表⽰任意两个连续的字符, ⽐如Ac, MM, K9, 都可以,
// 但(\w)\1只能是AA, CC, 99 这样连续相同的字符
/
/所以, 你可以这样理解, \1 是对(\w)的⼀个实例化引⽤, 当(\w) 匹配到A时, \1 被表达成A, 当(\w)匹配9时, \1 被表⽰成9
//说了这么多, 可能有些废话, 下⾯这个例⼦就很好理解了
var str = "AA Am 99";
var reg = /(\w)\1/g;
str.match(reg);//输出: ["AA", "99"]
所以, 参照上边我所引⽤的⽂章中给出的 "关键字搜索⾼亮显⽰的正则表达⽤法" 的例⼦, 我给出⾃⼰改进的⼩的DEMO 虽然这个DEMO没有⽤到任何的关于反向引⽤的知识点::>_<::
//测试环境 Chrome浏览器
var key = "keywords";//搜索的关键字
var text = " I am a text, and I have a keywords before this";//待匹配的⽂本
var reg = new RegExp("("+key+")","g");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论