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.更多策劃中 投稿,完善本系列,讓...