正則表達式知識補漏
0、括號的用法:
a、將( 和 ) 之間的表達式定義為“組”(group),並且將匹配這個表達式的字符保存到一個臨時區域。一個正則表達式中最多可以保存9個組。
b、匹配括號需要轉義;
1、大括號的用法:
a、大括號前面有要匹配的字符,且大括號裏面有數字或逗號+數字或數字 +逗號+數字的組合時,表示量詞;
b、除作為量詞分界標誌的情況外,大括號只是一個普通的匹配字符,把它用作普通匹配字符時,不需要轉義。
2、中括號的用法:
a、中括號裏面可以放任意個匹配字符,表示一個匹配字符集合,匹配時一次只匹配該集合中的一個字符;
b、中括號裏面不帶反斜杠的元字符會被視作普通匹配字符,而不需要特別轉義,例如 . 將被視為一個點,而不是除制表和空格外的所有字符,但\d將會被視為數字集合;
c、中括號裏面的量詞將會被視為普通匹配字符,因為中括號裏面的量詞無意義,例如 [ \d+? ] 裏面的+號和?號只是作為普通匹配字符,而不會被視為量詞 ;
d、^字符只有放在中括號裏才表示取反集合,其他情況下表示以某匹配字符或匹配字符組合開頭;
e、匹配中括號需要轉義。
3、量詞就近修飾原則:
a、量詞只修飾最靠近量詞左邊的匹配字符或者匹配字符集合(以中括號標識)或字符組(以括號標識);
4、貪婪和非貪婪模式:
a、JavaScript中的量詞均執行貪婪匹配,量詞後面加問號?表示非貪婪匹配;
5、全局匹配:
a、正則表達式後面加g表示全局匹配;
b、正則表達式後面加i表示忽略大小寫;
6、正則表達式的或:
a、| 或表示幾個中任意一個符合即可;
7、正則預查:
a、正向肯定預查(?=pattern),例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。;
b、正向否定預查(?!pattern),例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。;
c、反向肯定預查(?<=pattern),例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。;
d、非獲取匹配(?:pattern),匹配pattern但不獲取匹配結果,不進行存儲供以後使用。這在使用或字符“(|)”來組合一個模式的各個部分時很有用。例如“industr(?:y|ies)”就是一個比“industry|industries”更簡略的表達式。
正則表達式知識補漏