PHP正規表示式

2022-07-02 18:06:17 字數 3360 閱讀 9245

正規表示式的主要作用是:分割、匹配、查詢、替換

正規表示式中包括的元素:

原子(普通字元:a-z a-z 0-9 、原子表、轉義字元)

元字元(有特殊功能的字元)

模式修正符(系統內建部分字元 i 、m、s、u...)

轉義字元

\d 包含所有數字[0-9]

\d 除所有數字外[^0-9]

\w 包含所有字元(大小寫英文本母、下劃線、數字) [a-za-z_0-9]

\w 除所有字元(大小寫英文本母、下劃線、數字)外 [^a-za-z_0-9]

\s 空白區域如回車、換行、分頁等 [\f\n\r]

\s 非空白區域如回車、換行、分頁等 [^\f\n\r]

元字元. 匹配任意次但不包含回車換行

* 匹配任意次

? 匹配0次或1次

+ 匹配1次或多次

| 選擇匹配(或者)

^ 匹配開頭(方括號中表示非)

$ 匹配尾部

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

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

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

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

模式修正符: 【/正則/u 】

小寫i:不區分大小寫

小寫m:匹配首內容或尾內容時採用多行識別匹配

小寫s:將轉義回車取消視為單行匹配

小寫x:忽略正則中的空白

大寫a:強制從頭開始匹配

大寫d:強制$匹配尾部無任何內容

大寫u:禁止貪婪匹配,只跟蹤到最近的乙個匹配符並結束,常用在採集程式

小寫u:匹配中文

perl正規表示式函式:

preg_grep($mode,$str) //匹配查詢,返回乙個陣列;

preg_match($mode,$str,$return) //在字串中查詢匹配項,返回乙個陣列。

preg_match_all($mode,$str,$return [,int flags])

preg_split($mode,$str [,int limit 切割多少次 [,int flags] ] ) //使用正規表示式分割字串,並將結果以陣列的形式返回(類似explode)。

preg_replace($mode,$replacement,$str [,int limit 匹配多少次]) //查詢和替換子字串(類似str_replace)

preg_quote($str) //在每個正規表示式的特殊字元前面加入乙個轉義字元(反斜線「\」),正規表示式的特殊字元包括:.\\+*?[^]$(){}=!<>|:

解題方法總結:

1.先寫出乙個要匹配的字串

2.自左向右的順序使用正規表示式的原子和元字元拼接

3.加入模式修正符

【常用正規表示式】

//刪除一對中括號內的內容:

$str = 'abc[url]123[/url]xyz';

$pattern = '/\[url\s*\[\/url\s*\]/';

$str = preg_replace($pattern, '', $str);

echo $str . ''; //輸出:abcxyz

//php匹配多對中括號中的內容:

$str = '這是[3]def[25]我的[26]';

$pattern = '/\[([a-z0-9]+)\]/';

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

print_r($match);

//匹配所有大括號裡面的內容:

$str = 'abcdefmn';

$pattern = '//u';

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

print_r($match);

$str = '

';$pattern = '//i';

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

print_r($match);

$str = '跳轉';

$pattern = '/(.*?)/i';

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

print_r($match);

//匹配郵件

$str = '[email protected]';

$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z])$/i";

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

print_r($match);

//匹配11位手機號:

$str = '13299803211';

$pattern = "/^1(3|5|8)\d$/";

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

print_r($match);

//匹配139開頭的11位手機號碼

$str = '13912345678';

$pattern = '/^139\d$/';

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

print_r($match);

//utf-8編碼下提取字串中的中文:

$str = 'hello 中文 byebye';

$pattern = '/[\x-\x]+/u';

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

print_r($match); //「中文」

//替換字串中的中文為空

$res = preg_replace($pattern,'',$str);

echo $res.』';

//分割中文字串為等長度元素的陣列(英文可以用str_split,但中文會亂碼)

$str = '中文字串';

$res = preg_split('/(?print_r($res);

//過濾網頁上的所有script標記

$str = '測試php正則匹配掉js**

';$pattern = "//i"; //過濾js標籤

$pattern = "/]*?>/si"; //過濾html標籤

$res = preg_replace($pattern, "", $str);

echo $res.』';

//替換標籤為空

$str = 'abcabc';

$pattern = '/(.*?)/';

$res = preg_replace($pattern,'\\1',$str);

echo $res.'';

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