.*?与.+?
?在 + 和 * 后面表示非贪婪
+ 表示重复前面的一次及以上
* 表示重复前面的0次及以上正则表达式
(?:pattern) :匹配pattern但不获取匹配的子字符串,也就是说这是一个非获取匹配,不存储匹配的子字符串用于向后引用 ,这种形式的匹配须要本身进一步研究spa
例如正则: nh\t生于(?:\tnt)+
nh 生于 nt nt nt wp ns n wp nt
nh 生于 nt wp ns n wp ntcode
以上红色部分表示匹配部分字符串
三、比较(X)和(?:X)string
比较(X)和(?:X), 前者是捕获分组,后者不捕获,区别在于正则表达式匹配输入字符串以后所得到的匹配的(数)组当中没有(?:X)
匹配的部分;
好比引用
var m = "abcabc".match(/(?:a)(b)(c)/) //结果 ["abc", "b", "c"] // m[0] 是/(?:a)(b)(c)/匹配到的整个字符串,这里包括了a // m[1] 是捕获组1,即(b)匹配的子字符串substring or sub sequence // m[2] 是捕获组2,即(c)匹配到的
若是这样co
var m = "abcabc".match(/(a)(b)(c)/) //结果 ["abc", "a", "b", "c"]