匹配單個字符
匹配單個數字的寫法,可以是 “[0-9]
” 也可以是 “\d
”。
匹配單個非數字字符,則使用大寫 “\D
”。
匹配 26 個字母的任意一個,使用 “[a-zA-Z]
”
匹配任意一個字符,使用點號 “.
”
匹配具體字符,則直接寫上去即可。比如 “abcd
” 就是匹配它本身。如果遇到特殊字符,則需要進行轉義,轉義字符為 “\
”。
匹配一個字符,使用中括號的做法稱為 “字符集”。中括號用于指定一個 “集”,匹配這個集中的一個字符,如十六進制數 “[0-9a-fA-F]
”。字符集內的點表示的是點號本身,但其他的特殊字符還是需要進行轉移,比如反斜杠字符。
使用量詞
貪心匹配
如果要表示某個規則的重復,則需要使用量詞。使用花括號表示重復次數。比如 8 個數字可以這樣表示:“\d{8}
”
花括號中的量詞可以變化,比如表示 7 到 8 個數字,則表示為 “\d{7,8}
”。表示上限的右值可以不寫,比如 “{0,}
” 是合法的,表示大于等于 0 個字符;但試圖單獨表示上限的 “{,10}
” 則不合法,至少應該寫為 “{0,10}
”。
加號 “+
” 表示它左邊的元素數量為 “一個或多個”,等于 “{1,}
” 的效果。所以加號也是特殊字符。
星號 “*
” 表示它左邊的元素數量為 “零個或至少一個”,即 “{0,}
”。
問號 “?
” 表示 “零個或一個”,等同于 “{0,1}
”。
懶惰匹配
上面的諸如 +
、*
,匹配的時候都會使用 “貪心” 的模式,也就是匹配盡量多的個數。比如字符串 “55555”,使用 “5+
” 去匹配時,會匹配到它能夠找到的最長字符串,即 “55555”。
如果在量詞后面加上問號,則使匹配模式變為 “懶惰” 的,也就是匹配最少的。比如使用 “5+?
” 去匹配,則只會找到能夠匹配的最小字符 “5”.
以下都是可用的懶惰匹配表達式:+?
, *?
, {n,}?
, {m,n}?
捕獲分組(類似于宏定義)
可以把表達式中的一部分 “捕獲” 起來,作為宏放在后邊引用。使用括號進行定義(捕獲),然后再定義的后面使用 “\1
” 進行引用;如果是第二個捕獲,則使用 “\2
”,以此類推。
分組一般都會被保存起來,但是當表達式非常長的時候,可能需要明確指明不保存該分組。比如使用這個格式 “(?:THE|The|the)
”,就使用了 “?:
” 標號來表示不要進行命名標記。
“或” 邏輯
使用 “|
” 來鏈接兩個字段,提供 “或” 的邏輯。注意與括號搭配使用
“非” 邏輯
如果在集合 “[...]
” 中使用字符 “^
”,則表示 “非”,如 “[^0-9]
” 等同于 “\D
”。
簡單的模式匹配
以下是各種常用的單字符匹配列表:
\d
\w
[_a-zA-Z0-9]
”\D
\W
\t
\0
[\b]
\s
[ \t\n\r]
”\r
\n
\b
.
邊界
本小節設計一個概念:斷言,又稱為 “零寬度斷言(zero-width asseration)”。這個概念不匹配字符,而是匹配字符串中的位置。
行的起始和結束
使用 “
^
” 表示一行的開始使用 “
$
” 表示一行的終止
單詞邊界和非單詞邊界
比如要匹配單詞 “the”,則寫 “\bthe\b
”。如果要匹配哥哥中間帶 “e” 的單詞,則可以寫 “\Be\B
”
可以使用 “\<
” 匹配單詞開頭,“\>
” 匹配單詞結尾。但是這兩個并不建議使用,因為新的匹配器可能不支持。
Unicode 字符和其他字符
正則表達式支持輸入 unicode 的值,如 “\u00e9
”。注意 unicode 必須有四位十六進制位,大小寫均可。Javascript 還支持 “\xe9
” 的寫法,然而 “\x00e9
” 則是錯誤的。
相關推薦:
js正則表達式驗證時間格式實例
正則表達式 \v 元字符詳解
JS正則表達式要點分析
以上就是正則表達式字符小結的詳細內容,更多請關注php中文網其它相關文章!