正規表示式的匹配規則

2021-10-03 12:14:32 字數 1631 閱讀 6912

大部分字元在正規表示式中,就是字面的含義,比如 /a/ 匹配 a, /b/ 匹配b。這種只表示它字面量含義的被稱為字面量字元。

除了字面量,還有一些字元有特殊含義,不代表字面意思,被稱為元字元

1,點字元(.)

點字元匹配除回車(\r)、換行(\n)、行分隔符(\u2028)和分段符(\u2029)之外的所有字元 注:碼點大於0xffff的unicode字元不能被匹配,因為會被認為是兩個字元。      

2,位置字元

^ 表示字串的開始位置, $ 表示字串的結束位置。

3,選擇符(|)

豎線符號在正則中表示 『或關係』 , 即匹配其中之一即可。

…等等正則中那些有特殊含義的元字元,如果要匹配它們本身,就要在前面加反斜槓。 比如要匹配 +, 就必須寫成 +;

在正則中,需要反斜槓轉義的一共有12個字元: ^ . [ $ ( ) | * + ? 表示,表示重複n次,表示至少重複n次,表示重複不少於n次,不多於m次。

量詞符用來設定某個模式出現的次數。

?問號表示某個模式出現0次或1次, 等同於;

* 星號表示出現0次或多次,等同於 

+ 加號表示出現1次或多次, 等同於

量詞符預設情況下都是最大可能匹配,即匹配到不能匹配為止,這種模式就叫貪婪模式

/a+/ 表示匹配1個或多個a,那麼到底會匹配幾個a呢? 因為預設的是貪婪模式,所以會一直匹配到後面不是a為止。

如果想將貪婪模式改為非貪婪模式,可以在量詞後面加乙個問號。這時候一旦滿足條件,就不再往下匹配了。

*?表示某個模式出現0次或者多次,採用非貪婪模式

+?表示模式出現1次或者多次,採用非貪婪模式

g 表示全域性匹配

i 表示忽略大小寫

m 表示多行模式。會修改^和的行為

。加了m

修飾符後

,和

的行為。 加了m修飾符後,^和

的行為。加了

m修飾符

後,和會識別換行符( \n )

1,正則中的括號()表示分組匹配,括號中的模式表示分組中的內容。

在正規表示式內部, 還可以使用 \n 來引用括號匹配的內容, n是從1開始,表示對應順序的括號

/(.)b(.)\1b\2/.test(『abcabc』); \1匹配了第乙個括號的a, \2匹配了第二個括號的c

2,非捕獲組

(?:x)稱為非捕獲組,表示不返回該組匹配的內容。

3,先行斷言

x(?=y)稱為先行斷言。x只有在y前面才匹配,y不計入匹配結果中。

4,先行否定斷言

x(?!y) 為先行否定斷言。 x只有不在y前面才匹配。

用通俗的語句來解釋上面的這些:

x(?! y): x只有不在y前面才匹配

x(?=a): 表示在a的前面 才匹配。

x(?<= a): 表示a的後面才匹配

x(?

正規表示式 匹配規則

一切從最基本的開始。模式,是正規表示式最基本的元素,它們是一組描述字串特徵的字元。模式可以很簡單,由普通的字串組成,也可以非常複雜,往往用特殊的字元表示乙個範圍內的字元 重複出現,或表示上下文。例如 once這個模式包含乙個特殊的字元 表示該模式只匹配那些以once開頭的字串。例如該模式與字串 on...

正規表示式 匹配規則

一切從最基本的開始。模式,是正規表示式最基本的元素,它們是一組描述字串特徵的字元。模式可以很簡單,由普通的字串組成,也可以非常複雜,往往用特殊的字元表示乙個範圍內的字元 重複出現,或表示上下文。例如 once這個模式包含乙個特殊的字元 表示該模式只匹配那些以once開頭的字串。例如該模式與字串 on...

正規表示式的匹配規則

將下一字元標記為特殊字元 文字 反向引用或八進位制轉義符。例如,n 匹配字元 n n 匹配換行符。序列 匹配 匹配 匹配輸入字串開始的位置。如果設定了 regexp 物件的 multiline 屬性,還會與 n 或 r 之後的位置匹配。匹配輸入字串結尾的位置。如果設定了 regexp 物件的 mul...