php高階篇 2 正規表示式

2021-08-17 10:00:42 字數 2026 閱讀 7674

正規表示式是對字串進行操作的一種邏輯公式,就是用一些特定的字元組合成乙個規則字串,稱之為正則匹配模式。

if (preg_match($p, $str))

php中使用pcre庫函式進行正則匹配,比如上例中的preg_match用於執行乙個正則匹配,常用來判斷一類字元模式是否存在。

pcre庫函式中,正則匹配模式使用分隔符與元字元組成,分隔符可以是非數字、非反斜線、非空格的任意字元。經常使用的分隔符是正斜線(/)、hash符號(#) 以及取反符號(~),例如:

/foo bar/

#^[^0-9]$#

~php~

如果模式中包含分隔符,則分隔符需要使用反斜槓(\)進行轉義。

\//如果模式中包含較多的分割字元,建議更換其他的字元作為分隔符,也可以採用preg_quote進行轉義。

$p;分隔符後面可以使用模式修飾符,模式修飾符包括:i, m, s, x等,例如使用i修飾符可以忽略大小寫匹配:

$str = "";

if (preg_match('/http/i', $str))

正規表示式中常用的模式修正符有i、g、m、s、x、e等。它們之間可以組合搭配使用。

它們的作用如下:

//修正符:i 不區分大小寫的匹配;

//修正符:g表示全域性匹配

//修正符:m 將字串視為多行,不管是那行都能匹配;

//修正符:s 將字串視為單行,換行符作為普通字元;

//修正符:x 將模式中的空白忽略;

//修正符:a 強制從目標字串開頭匹配;

//修正符:d 如果使用$限制結尾字元,則不允許結尾有換行;

//修正符:u 只匹配最近的乙個字串;不重複匹配;

//修正符:e 配合函式preg_replace()使用,可以把匹配來的字串當作正規表示式執行;

正規表示式中具有特殊含義的字元稱之為元字元,常用的元字元有:

\ 一般用於轉義字元

^ 斷言目標的開始位置(或在多行模式下是行首)

$ 斷言目標的結束位置(或在多行模式下是行尾)

. 匹配除換行符外的任何字元(預設)

[ 開始字元類定義

] 結束字元類定義

| 開始乙個可選分支

( 子組的開始標記

) 子組的結束標記

? 作為量詞,表示 0 次或 1 次匹配。位於量詞後面用於改變量詞的貪婪特性。 (查閱量詞)

* 量詞,0 次或多次匹配

+ 量詞,1 次或多次匹配

自定義量詞結束標記

//下面的\s匹配任意的空白符,包括空格,製表符,換行符。[^\s]代表非空白符。[^\s]+表示一次或多次匹配非空白符。

$p = '/^我[^\s]+(蘋果|香蕉)$/';

$str = "我喜歡吃蘋果";

if (preg_match($p, $str))

元字元具有兩種使用場景,一種是可以在任何地方都能使用,另一種是只能在方括號內使用,在方括號內使用的有:

\ 轉義字元

^ 僅在作為第乙個字元(方括號內)時,表明字元類取反

- 標記字元範圍

其中^在反括號外面,表示斷言目標的開始位置,但在方括號內部則代表字元類取反,方括號內的減號-可以標記字元範圍,例如0-9表示0到9之間的所有數字。

//下面的\w匹配字母或數字或下劃線。

$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';

$str = "我的郵箱是[email protected]";

preg_match($p, $str, $match);

echo

$match[0];

正規表示式高階篇

1 9 1 012 0 5 0 9 am pm 匹配12小時時間的正則 0 9 0 9 s cf 匹配攝氏度,雖然 s匹配的是空格 製表符 換行符 回車。但在這裡只有空格有意義。所以可以用 s表示匹配空格。匹配左側文字 tom jeffs b 匹配 jack tom jeffs hi tom jac...

正規表示式高階篇

1 9 1 012 0 5 0 9 am pm 匹配12小時時間的正則 0 9 0 9 s cf 匹配攝氏度,雖然 s匹配的是空格 製表符 換行符 回車。但在這裡只有空格有意義。所以可以用 s表示匹配空格。匹配左側文字 tom jeffs b 匹配 jack tom jeffs hi tom jac...

Javascript 高階篇 正規表示式

淺拷貝 拷貝就是複製,就相當於把乙個物件中的所有的內容,複製乙份給另乙個物件,直接複製,或者說,就是把乙個物件的位址給了另乙個物件,他們指向相同,兩個物件之間有共同的屬性或者方法,都可以使用 var obj1 另乙個物件 var obj2 寫乙個函式,作用 把乙個物件的屬性複製到另乙個物件中,淺拷貝...