PHP正規表示式

2021-07-08 17:43:57 字數 2876 閱讀 8091

1.基本格式

正規表示式的形式一般如下:

「/abc/」  或者 「#abc#」

2.正則函式

3.元字元

較為常用的元字元包括:「+」, 「*」,以及「?」。

*   其前導字元必須在目標物件中出現0次、1次或連續多次;

.   用於匹配除換行符之外的所有字元1次;

?   其前導匹配物件連續出現0次或1次;

+   其前導匹配物件連續出現1次或多次;

|   選擇匹配類似php中的| (因為這個運算符合是弱型別導致前面最為整體匹配);

^   匹配物件出現在字串的首部;

$   匹配物件出現在字串尾部

匹配前乙個內容的重複次數為m次;

匹配前乙個內容的重複次數大於等於m次;

匹配前乙個內容的重複次數m次到n次;

( )    合併整體匹配,並放入記憶體,可使用\1 \2…依次獲取;

\b     出現在目標字串的開頭或結尾的兩個邊界之一,邊界可以是空格或者特殊字元;

\b     物件必須位於目標字串的開頭和結尾兩個邊界之內,即匹配物件既不能作為目標字串的開頭,也不能作為目標字串的結尾;

\s:   用於匹配單個空格符,包括tab鍵和換行符,等價於[\f\t\v];

\s:   用於匹配除單個空格符之外的任何乙個字元,[^\f\t\v];

\d:   匹配從0到9的乙個數字,等價於[0-9];

\d     匹配除數字以外任何乙個字元,等價於[^0-9];

\w:   用於匹配乙個字母、數字或下劃線字元,等價於[0-9a-za-z_];

\w:   用於匹配所有除英文本母、數字和下劃線以外任何的乙個字元,[^0-9a-za-z_];

\a     匹配字串串首的原子

\z     匹配字串串尾的原子

\f     匹配乙個換頁符等價於 \x0c 或 \cl

\t     匹配乙個製表符;等價於 \x09\或\cl

\v     匹配乙個垂直製表符;等價於\x0b或\ck

\onn   匹配乙個八進位制數字

\xnn   匹配乙個十六進製制數字

\cc    匹配乙個控制字元

4.運算順序

運算規則:從左→到右

優先順序:   

()( )  圓括號因為是記憶體處理所以最高;

* ? +   重複匹配內容其次;

^ $ \b 邊界處理第三;

|  條件處理第四;

最後按照運算順序計算匹配。

5.運用例項

「^abc」:開頭一定要有」abc」字串;

「of me$」:結尾一定要有」of me」 的字串;

「^abc$」:就是要求以abc開頭和以abc結尾的字串,實際上是只有abc匹配;

「abc」:匹配包含abc的字串;

』*』 『+』 和 『?』 只管它前面那個字元

「ab*」:  和ab同義,匹配以a開頭,後面可以接0個或者n個b組成的字串(」a」, 「ab」, 「abbb」, 等);

「ab+」:  和ab同義,同上條一樣,但最少要有乙個b存在 (」ab」 「abbb」等);

「ab?」:  和ab同義,可以沒有或者只有乙個b;

「a?b+$」:匹配以乙個或者0個a再加上乙個以上的b結尾的字串。

「ab」: 要求a後面可以有2-5個b(」abbb」, 「abbbb」, or 「abbbbb」)。

「a(bc)*」: 匹配 a 後面跟0個或者乙個」bc

「hi|hello」: 匹配含有」hi」 或者 「hello」 的字串

「a.[0-9]」: 乙個a加乙個字元再加乙個0到9的數字;

「^.$」: 三個任意字元結尾。

中括號括住的內容只匹配乙個單一的字元

「[ab]」: 匹配單個的 a 或者 b ( 和 「a│b」 一樣);

「^[a-za-z]」: 匹配以大小寫字母開頭的字串;

「[0-9]%」: 匹配含有形如 x% 的字串;

「,[a-za-z0-9]$」: 匹配以逗號再加乙個數字或字母結尾的字串;

6.驗證郵箱

構造檢查email的正規表示式

在乙個完整的email位址中有三個部分:

1. 使用者名稱 (在『@』左邊的一切)

2.』@』

3. 伺服器名(就是剩下那部分)

使用者名稱可以含有大小寫字母阿拉伯數字,句號(』.』)減號(』-』)and下劃線』_』),伺服器名字也是符合這個規則,當然下劃線除外。

現在,使用者名稱的開始和結束都不能是句點,伺服器也是這樣,還有你不能有兩個連續的句點他們之間至少存在乙個字元。

好現在我們來看一下怎麼為使用者名稱寫乙個匹配模式:

^[_a-za-z0-9-]+$

現在還不能允許句號的存在,我們把它加上:

^[_a-za-z0-9-]+(\.[_a-za-z0-9-]+)*$

上面的意思就是說:以至少乙個規範字元(除了.)開頭,後面跟著0個或者多個以點開始的字串。

簡單化一點, 我們可以用eregi()取代ereg(),eregi()對大小寫不敏感, 我們就不需要指定兩個範圍「a-z」和「a-z」只需要指定乙個就可以了:

^[_a-z0-9-]+(\.[_a-z0-9-]+)*$

後面的伺服器名字也是一樣,但要去掉下劃線:

^[a-z0-9-]+(\.[a-z0-9-]+)*$

好,現在只需要用」@」把兩部分連線:

^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$

這就是完整的email認證匹配模式了,只需要呼叫:

eregi(」^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$」,$eamil)

就可以得到是否為email了

php正規表示式詳解,PHP正規表示式使用詳解

操作符 描述 轉義符 圓括號和方括號 限定符 anymetacharacter 位置和順序 或 操作 全部符號解釋 字元 描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開...

PHP正規表示式

php正規表示式的定義 用於描述字元排列和匹配模式的一種語法規則。它主要用於字串的模式分割 匹配 查詢及替換操作。php中的正則函式 php中有兩套正則函式,兩者功能差不多,分別為 一套是由pcre perl compatible regular expression 庫提供的。使用 preg 為字...

PHP正規表示式

今天起,會開始弄乙個php教程系列文章.主要是針對正規表示式的.大概的內容排序是這樣安排的 1.php 中的正規表示式 2.八個實用的php正規表示式 3.如何書寫更易閱讀的php正規表示式 4.半小時精通正規表示式 5.正則在文章採集系統中的應用及常見問題答疑 6.更多策劃中 投稿,完善本系列,讓...