.*?與.+?
?在 + 和 * 後面表示非貪婪
+ 表示重複前面的一次及以上
* 表示重複前面的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"]