天天看點

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

一、PHP正規表達式函數解析

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

preg_match();preg_match_all();表單驗證等

//email位址的合法性-preg_match(),比對結果可以看作是bool值

preg_replace();非法詞的過濾

//f**k

二、正規表達式基本文法

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

中午比對最好轉成unicode:Unicode轉換工具

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

注意:[^是必須在一起的,否則如下:^也被當成一個原子去比對。

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

提示

由于分枝規定,隻要比對成功,就不再對後面的條件加以比對,是以如果你想比對有包含關系的内容,請注意規則的順序。 下面是一個使用分枝的例子。

美國的郵政編碼的規則是 5 個數字或者 5 個數字連上 4 個數字,如 12345 或者 54321-1234 ,如果要比對所有的郵編,則正确的正規表達式為:

\d{5}-\d{4}|\d{5}

//錯誤寫法

\d{5}|\d{5}-\d{4}

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

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

.等價于[^\n]

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

{n} 表示比對其前面的原子恰好筆記出現n次的 如:5{3} 相當于 555 {n,}

表示比對其前面的原子最少出現n次的如:[a-zA-Z]{5,}至少連續出現5次的字母如wertt;

{n,m}表示其前面的原子最少出現5次,最多出現m次 如:w{5,9}

* 比對0次, 1次或者多次其之前的原子 即{0,} 如w*

+ 比對1次或多次其之前的原子 {1,} d+

?比對0次或1次其之前的原子 {0,1} _?u

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

第三、修正模式

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

取多種可能結果中最短的那個,預設是貪婪模式,既多種可能性中最長的那個

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法
php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

x:忽略空格和tab制表符空白格

四、實戰-常見正規表達式

php正規表達式 文法,PHP正規表達式函數解析與正規表達式基本文法

非空比對:.+

浮點數:\d+\.\d{2}$

手機号:^1(3|5)d{9}$

郵箱:^\w+(\.\w+)*@\w+(\.\w+)+$

URl:^(https?:\/\/)?(\w+\.)+[a-zA-Z]+$

僅比對3~15個漢字和大小寫字母:^([\x{4e00}-\x{9fa5}]|[a-zA-Z]){3,15}$/u

(/u表示按unicode(utf-8)比對(主要針對多位元組比如漢字),/U才是懶惰比對哦)

正規表達式的/要轉義,不轉義是比對不到的

模式單元(3|5|7|8)等同于[3578]

注意:(3|5) 等同于[35]而不是[3|5]哦!!