首頁  >  文章  >  後端開發  >  正規表示式字元小結

正規表示式字元小結

小云云
小云云原創
2018-02-22 13:14:031503瀏覽

正規表示式基本

符合單一字元

符合單一數字的寫法,可以是「[0-9]」 也可以是“ \d」。

符合單一非數字字元,則使用大寫 “\D”。

符合26 個字母的任意一個,使用「[a-zA-Z]

比對任一個字符,使用點號“.

符合具體字符,則直接寫上去即可。例如 “abcd” 就是要匹配它本身。如果遇到特殊字符,則需要進行轉義,轉義字符為 “\</code>”。

符合一個字符,使用中括號的做法稱為 「字符集」。中括號用於指定一個 “”,匹配這個集中的一個字符,如十六進制數 “[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字母、數字、底線[_a-zA-Z0-9]」非字母製表符Tab#Null 字元#Backspace」Return換行\b這裡只是符合單字的開始/ 結束,不消耗任何字元
#指涉類型 模式 備註
數字
\w
等效於「
#非數字##\D
#\W
\t
\0
[\b]
空格 #\s 等效於「
[ \t\n\r]
#\r
\n
單字之間的空白
######任何一個字元### ######.#########行結束符號無法使用這個符號來匹配############

正規表示式字元小結

邊界

本小節設計一個概念:斷言,又稱為「零寬度斷言( zero-width asseration)」。這個概念不匹配字符,而是匹配字串中的位置。

行的起始與結束

  • 使用「^」 表示一行的開始

  • 使用“$” 表示一行的終止

單字邊界和非單字邊界

例如要符合單字“the”,則寫“\bthe\b」。如果要匹配哥哥中間帶“e” 的單詞,則可以寫“\Be\B

可以使用“\<” 匹配單字開頭,“ \>” 符合單字結尾。但是這兩個並不建議使用,因為新的匹配器可能不支援。

正規表示式字元小結

Unicode 字元和其他字元

正規表示式支援輸入unicode 的值,如「\u00e9」。注意 unicode 必須有四位十六進位位,大小寫皆可。 Javascript 也支援 “\xe9” 的寫法,然而 “\x00e9” 則是錯誤的。

相關推薦:

js正規表示式驗證時間格式實例

正規表示式 \v 元字元詳解

JS正規表示式要點分析


以上是正規表示式字元小結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn