读jQuery源码,其中不可避免的要弄明白正则表达式,在此对非捕获组(non-capturing)进行了一些梳理。
要书明白捕获,就要先从分组开始。重复单字符我们可以使用限定符,如果重复字符串,用什么呢? 对!用小括号,小括号里包裹指定字表达式(子串),这就是分组。之后就可以限定这个子表示的重复次数了。
那么,什么是捕获呢?使用小括号指定一个子表达式后,匹配这个子表达式的文本(即匹配的内容)可以在表达式或者其他过程中接着用,怎么用呢?至少应该有个指针啥的引用它吧? 对!默认情况下,每个分组(小括号)会自动
拥有一个组号,从左到右,以分组的左括号为标志,第一个出现的分组组号为1,后续递增。如果出现嵌套,
例如:
“aabcd”
采用正则(a(b))(c)
match 结果入下:
分组 | 捕获 |
---|---|
$1(group1) | ab |
$2(group2) | b |
$3(group3) | c |
继续涨姿势。
一、(?:)非捕获组走起。
由下面一个例子引发对非捕获组的学习。
有两个金额:6000¥ 和 1000$。
需求是得到金额和货币种类。
『废话少说,多用正则』:
(/d+)+([$¥])
输出结果为:
OK,满足了要求。这里的正则分成了两个组,一个是(d+),一个是(¥$),前一个组($1)匹配金额,后一个组($2)匹配货币种类。
新闻热点
疑难解答