PHP 正規表示式語法(二)

2021-06-05 13:05:07 字數 1593 閱讀 6876

正規表示式的威力在於其能夠在模式中包含選擇和迴圈,正規表示式用一些重複規則來表達迴圈匹配。

常用的重複如下:

重複說明

*重複零次或更多次

+重複 1 次或更多次

?重複零次或 1 次

重複 n 次

重複 n 次或更多次

重複 n 到 m 次

分枝是指制定幾個規則,如果滿足任意一種規則,則都當作匹配成功。具體來說就是用 | 符號把各種規則分開,且條件從左至右匹配。

由於分枝規定,只要匹配成功,就不再對後面的條件加以匹配,所以如果你想匹配有包含關係的內容,請注意規則的順序。

下面是乙個使用分枝的例子。

\d-\d|\d

//錯誤寫法

\d|\d-\d

下面的錯誤寫法,只能匹配到 5 位數字及 9 位數字的前 5 位數字的情況,而不能匹配 9 位數字的郵編。

在正規表示式中,可以用小括號將一些規則括起來當作分組,分組可以作為乙個元字元來看待。

(\d\.)\d
這是乙個簡單的且不完善的匹配 ip 位址的正規表示式,因為它除了能匹配正確的 ip 位址外,還能匹配如 322.197.578.888 這種不存在的 ip 位址。

當然,用這個表示式簡單匹配成功後可以在利用 php 的算術比較再加以判斷 ip 位址是否正確。而正規表示式中沒有提供算術比較功能,如果要完全匹配正確的 ip 位址,則需要改進如下:

((25[0-5]|2[0-4]\d|[01]?\d\d?)\.)(25[0-5]|2[0-4]\d|[01]?\d\d?)
該規則關鍵之處在於確定 ip 位址每一段範圍為 0-255 ,然後再重複 4 次即可。在:

25[0-5]|2[0-4]\d|[01]?\d\d?
中,用分枝首先確定了 250-255 和 200-249 。 [01]?\d\d? 則確定了 0-199 的範圍,綜合起來就是 0-255 。

與貪婪匹配對應的是,在滿足匹配條件的情況下盡可能的匹配更少的內容,這就是懶惰匹配。

上述例子對應的懶惰匹配規則為:

a.*?b
如果用該表示式去匹配 aabab ,那麼就會得到 aab 和 ab 這樣兩個匹配結果。

常用的懶惰限定符如下:

懶惰限定符

說明*?

重複任意次,但盡可能少重複

+?重複 1 次或更多次,但盡可能少重複

??重複 0 次或 1 次,但盡可能少重複

重複 n 次以上,但盡可能少重複

重複 n 到 m 次,但盡可能少重複

模式修正符是標記在整個正規表示式之外的,可以看著是對正規表示式的一些補充說明。

常用的模式修正符如下:

模式修正符說明i

模式中的字元將同時匹配大小寫字母

m字串視為多行

s將字串視為單行,換行符作為普通字元

x將模式中的空白忽略

epreg_replace() 函式在替換字串中對逆向引用作正常的替換,將其作為 php **求值,並用其結果來替換所搜尋的字串。

a強制僅從目標字串的開頭開始匹配

d模式中的 $ 元字元僅匹配目標字串的結尾

u匹配最近的字串

u模式字串被當成 utf-8

正規表示式語法二

i執行對大小寫不敏感的匹配。g執行全域性匹配 查詢所有匹配而非在找到第乙個匹配後停止 m執行多行匹配。new regexp feifei i 直接量語法 feifei i var str visit w3school var patt1 w3school i visit w3school new r...

php正規表示式基本語法

正規表示式的形式一般如下 love 其中位於 定界符之間的部分就是將要在目標物件中進行匹配的模式。使用者只要把希望查詢匹配物件的模式內容放入 定界符之間即可。為了能夠使使用者更加靈活的定製模式內容,正規表示式提供了專門的 元字元 所謂元字元就是指那些在正規表示式中具有特殊意義的專用字元,可以用來規定...

正規表示式語法

jscript 8.0 正規表示式語法 正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元 模式描述在搜尋文字時要匹配的乙個或多個字串。表示式 匹配 s 匹配空行。d d 驗證由兩位數字 乙個連字元再加 5 位數字組成的 id 號。s s 匹配 html ...