##
修飾符:
- g:global全文搜索,不添加,搜尋到第一個匹配停止。
- i:ignore case 忽略大小寫,預設大小寫敏感。
- m:multiple lines 多行搜尋。
- lastIndex:目前表達式符合內容的最後一個字元的下一個位置
##source:正規表示式的文字字串
正規表示式有2種基本字元型別組成:
原義文字字元(例如:abc) 元字元(例如:\b)。元字符是正規表示式中有特殊意義的非字母字元(.*+?^.|\(){}[])
元字符:
\t:水平製表符 #\v:垂直製表符 \n:換行符號 \r:回車符號 #\0:空白字元-
\f:換頁符號
字元類別:
[abc]:建立一個簡單的類別(例如:'a1b2c3d4'.replace(/[abc]/g,'X') =》X1X2X3d4) [^abc]:取反 #
範圍類別:
[a-z]:從a到z的任意字符,包含a和z。 (例如:'a1b2c3d4aa'.replace(/[a-z]/g,'X') =》X1X2X3X4XX) [a-zA-Z]:在[]組成的類內部可以連寫的。 [a,z]:分割('12345678'.replace(/[1,3]/g,'A') =》A2A45678) #
預先定義類別:
.:除了回車符和換行符號之外的所有字元([^\r\n]) \d:數字字元([0-9]) #\D:非數字字元([^0-9]) \s:空白符號([\t\n\x0B\f\r]) \S:非空白符( [^\t\n\x0B\f\r] ) \w:單字字符,包含字符、數字、底線([a-zA-Z_0-9]) \W:非單字字元([^a-zA-Z_0-9 ])
邊界匹配字符:
^:以xxx開始('@123@abc@a'.replace(/^@./g,'X') =》X23@abc@a) $:以xxx結束('@123@abc@a'.replace(/@.$/g,'X') =》@123@abcX) #\b:單字邊界 \B:非單字邊界
量詞:
?:出現0次或1次 #+:出現1次或多次 #*:出現0次或多次 {n}:出現n次 {n,m}:出現n到m次 {n,}:至少出現n次 #
##貪婪模式:正規表示式會盡可能多的匹配,直到匹配失敗。 ('12345678'.replace(/\d{3,6}/g,'A') =》A78)
非貪婪模式:盡可能少的配對。在量詞後面加上?即可。 ('12345678'.replace(/\d{3,6}?/g,'A') =》AA78)
分組:
使用()可以達到分組的功能,使量詞作用於分組('a1b2c3d4'.replace(/(\w\d){3}/g,'X') =》Xd4)
-
或|('a1b2c3d4'.replace(/(a1|b2)/g,'X') =》XXc3d4)
-
#反向引用('2017-05-06'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1') =》05/06/2017)
忽略分組:不希望捕獲某些分組,只需要在分組內加上?:就可以
#前瞻:在正規表示式符合到規則的時候,向前檢查是否符合斷言,後顧方向相反,JS不支援後顧。
正向前瞻:exp(?=assert)('a2*3'.replace(/\w(?=\d)/g,'X') =》X2 *3)
-
負向前方瞻:exp(?!assert)
-
正向後顧:exp(?<=assert), JS不支援。
-
負向後顧:erp((?
-
test( str):用於測試字串參數中,是否存在符合正規表示式模式的字串。 exec(str):使用正規表示式模式對字串執行搜索,並將更新全域RegExp物件的屬性以反映符合結果。 index 宣告符合文字的第一個字元的位置,input 存放唄檢索的字串string
以上是javascript-正規表示式的詳細內容。更多資訊請關注PHP中文網其他相關文章!