PHP正規表示式

2021-08-31 13:13:23 字數 2565 閱讀 5690

一、概述

正規表示式是進行模式匹配和文字操縱的一種複雜而強大的工具。在php中可以方便的利用這些匹配規則檢驗、替換及過濾字串。在php手冊「perl相容正規表示式函式」章節,可以了解pcre的一些基礎知識,以及如何使用preg_match(),preg_replace(),preg_split()等函式。

正規表示式通過其簡單的語法構造模式,能夠匹配幾乎任何可以想象出來的字元組合。但正是因為這種簡潔,匹配字元組合在一起後也讓人頭暈。因此,記住一些關鍵匹配字元的含義就顯得尤為重要。只有記住這些才能將一連串的匹配字元拆分成段的理解。

郵箱驗證的正規表示式:

<?php

$email = "[email protected]";

if (! preg_match('/^[^0-9][a-za-z0-9_]+([.][a-za-z0-9_]+)*[@][a-za-z0-9_]+([.][a-za-z0-9_]+)*[.][a-za-z]$/', $email))

?>

定界符/

在pcre中,斜槓為界定符。

元字元

有兩組不同的元字元:一種是模式中除了方括號內都能被識別的,還有一種是在方括號內被識別的。

方括號外的元字元:反斜線\、音調符^、美元符$、句點.、方括號、豎線|、圓括號()、問號?、星號*、加好+、花括號{}。

模式中方括號內的部分稱為「字元類」,其內的元字元為:反斜線\、音調符^、中橫線-。

二、具體含義:

音調符^和美元符$

音調符:在字元類之外,預設匹配模式下僅在當前匹配點是目標字串的開頭時才為真的斷言。在字元類之中,音調符的含義完全不同,為指出字元範圍。

美元符:僅在當前匹配點是目標字串的結尾或者當最後乙個字元是換行符時其前面的位置時為true的斷言(預設情況下)。如果涉及到幾選一時美元符不需要是模式的最後乙個字元,但應該是其出現的分支中的最後乙個字元。美元符在字元類之中沒有特殊含義。

反斜線\

反斜線是有數種用途的通用轉義符,常用的有:

1、將某些元字元當普通字元用——如:( ) [ ] . * ? + ^ | $

2、指定通用字元型別:\d 任一十進位制數字;\d 任一非十進位制數的字元。

其用法還有表示二進位制、某些簡單的斷言等,詳細可以參考手冊。

四個常用元字元的含義

句點(.):匹配任意字元。因此,模式.at匹配cat、bat或rat等。

星號(*):匹配0或多個前面的物件。迄今為止,我們知道的唯一物件就是字元。

加號(+):和星號的含義類似,但是它指匹配1或多個前面的物件。因此,.+at匹配brat、sprat甚至catestrophe中的cat,但不匹配at。如果要匹配at,必須將+換成*。

問號(?):前面的物件是可選的。也就是說,它匹配0或1個前面的物件,模式color?既匹配color也匹配colour。模式color?表示,問號前面的r字元出現0或1次。

如果想讓元字元直接與自身匹配,需要在元字元前加上反斜槓。

字元類

如果想用一組特殊的字元匹配字元,可以通過將這些字元放到方括號中來建立乙個字元類。

方括號中可用的元字元有:

\ 通用轉義字元

^ 排除字元類,但僅當其為第乙個字元時有效。

- 指出字元範圍

豎線|

豎線符號也稱為管道(pipe),用於分隔多選一的模式。

如:gilbert|sullivan,匹配了"gilbert"或者"sullivan"中的乙個。可以有任意多個分支,也可以有空的分支(匹配空字串)。

子模式()

如果想對多個字元用*或+等,需要把相應的字串行放在乙個圓括號中構成物件。

如:cat(aract|erpillar|)

匹配了"cat","cataract"或"caterpillar"之一,沒有圓括號的話將匹配"cataract","erpillar"或空字串。

重複{}

重複是由數量符指定的,可以接以下任何一項:

1、單個字元,可以是被轉義的; 2、.匹配字元; 3、一類字元; 4、乙個反向引用; 5、乙個括號中的子模式(除非是個斷言)

普通的重複數量符指定了所允許的匹配的最小和最大數目,方法是將兩個數字放在花括號中,中間用逗號分隔。數字必須小於 65536,並且第乙個數字必須小於或等於第二個數字。例如:z 匹配了 "zz","zzz" 或 "zzzz"。單個的右花括號不算是特殊字元。如果省略了第二個數字但是有逗號,則表示沒有上限。如果同時省略了第二個數字和逗號,則數量符指定了匹配的準確數目。因此 [aeiou] 匹配至少連續 3 個母音,但是可以匹配更多。\d 則匹配了正好 8 個數字。出現在不允許放置數量符位置或者不符合數量符語法的左花括號,被當成字面上的該字元。例如 不是乙個數量符,而是字面上的這四個字元。

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