正規表示式基本
符合單一數字的寫法,可以是「[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
|
|
字母、數字、底線 |
\w |
等效於「 | [_a-zA-Z0-9]
#非數字 ##\D |
||
非字母 |
#\W |
|
製表符Tab |
\t |
|
#Null 字元 |
\0 |
|
#Backspace |
[\b] |
|
空格 | #\s |
等效於「 [ \t\n\r] | 」
Return |
#\r |
|
換行 |
\n |
|
單字之間的空白
| \b
本小節設計一個概念:斷言,又稱為「零寬度斷言( zero-width asseration)」。這個概念不匹配字符,而是匹配字串中的位置。
使用「^
」 表示一行的開始
使用“$
” 表示一行的終止
例如要符合單字“the”,則寫“\bthe\b
」。如果要匹配哥哥中間帶“e” 的單詞,則可以寫“\Be\B
”
可以使用“\<
” 匹配單字開頭,“ \>
” 符合單字結尾。但是這兩個並不建議使用,因為新的匹配器可能不支援。
正規表示式支援輸入unicode 的值,如「\u00e9
」。注意 unicode 必須有四位十六進位位,大小寫皆可。 Javascript 也支援 “\xe9
” 的寫法,然而 “\x00e9
” 則是錯誤的。
相關推薦:
以上是正規表示式字元小結的詳細內容。更多資訊請關注PHP中文網其他相關文章!