英文爲Regular expression
,簡稱:regex
或regexp
。
含義:按照某種規則去匹配符合條件的字符串正則表達式
正則表達式由兩種基本字符類型構成:express
元字符是在正則表達式中有特殊含義的非字母字符:*
+
?
^
$
.
|
\
()
{}
[]
等code
經常使用字符集: \t
:水平製表符 \v
:垂直製表符 \n
:換行符 \r
:回車符 \0
:空字符 \f
:換頁符 |
:或regexp
字符類:
由元字符[]
建立。字符類取反:由^
建立,反向類,[^123]
表示不是字符1
或2
或3
的內容對象
範圍類: [a-z]
:來鏈接兩個字符表示從a
到z
的任意字符字符串
預約義類: .
:[^\r\n]
,除了回車符和換行符以外的全部字符 \d
:[0-9]
,數字字符 \D
:[^0-9]
,非數字字符 \s
:[\t\n\x0B\f\r]
,空白符 \S
:[^\t\n\x0B\f\r]
,非空白符 \w
:[a-zA-Z0-9_]
,單詞字符(字母、數字、下劃線) \W
:[^a-zA-Z0-9_]
,非單詞字符 io
邊界: ^
:開始標記,以xx
開始 $
:結束標記,以xx
結束 \b
:單詞邊界 \B
:非單詞邊界 ast
量詞: ?
:出現0
次或1
次 +
:出現1
次或多個 *
:出現0
次或屢次(任意次) {n}
:出現n
次 {n,}
:出現n
次或n
次以上,當n
爲0
時等價於*
,n
爲1
時等價於+
{n,m}
:出現n
次到m
次,當n
爲0
且m
爲1
時等價於?
搜索
貪婪模式和非貪婪模式
正則表達式默認是貪婪模式,當使用量詞進行匹配時,會盡量匹配多的。英文
非貪婪模式:讓正則表達式儘量少的匹配,也就是說一旦成功匹配再也不繼續嘗試。
在量詞後面加上?
便可
'123456789'.match(/\d{3,5}?/g) result:{'123', '456', '789'}
分組()
忽略分組:(?: Byron).(ok)
前瞻後顧
正向前瞻:exp(?=assert)
負向前瞻:exp(?!assert)
正向後顧:exp(?<=assert)
負向後顧:exp(?<!assert)
對象屬性
global
:是否全文搜索,默認false
ignore case
:是否大小寫敏感,默認false
multiline
:多行搜索,默認值是false
lastindex
:是當前表達式匹配內容的最後一個字符的下一個位置source
:正則表達式的文本字符串