正規表示式

2022-09-01 18:57:08 字數 2506 閱讀 3997

第7章正規表示式

1.  什麼是正規表示式

正規表示式就是一種描述字串結構的語法規則

2. 為什麼需要正規表示式?

因為需要對使用者提交的資訊進行驗證,如果不驗證的話,有可能使用者提交的就是垃圾資訊

3. php裡面的正規表示式函式庫

在php裡面支援2套正規表示式函式庫,一套是posix,另外一套是pcre。比起posix,現在更多的是使用pcre這一套正規表示式函式。原因有兩個:pcre函式庫的相容性更好,並且效率高。

我們的正規表示式如果不配合正規表示式函式的話,它就只是乙個普通的字串。所以正規表示式一定要配合正規表示式函式來使用

4. 正規表示式語法

任何乙個正規表示式的組成無外乎由4個部分組成 ① 定界符 ② 原子 ③ 元字元 ④ 模式修正符

定界符我們所寫的正規表示式都需要放在定界符裡面。一般常見的定界符為兩個斜槓//

但是,我們的定界符不僅僅只有//  任何除了數字,字母,反斜槓\ 以外的字元都可以成為正規表示式的定界符

原子原子是正規表示式裡面最基本的組成單位。換句話說,乙個正規表示式裡面,可以沒有元字元,可以沒有模式修飾符,但是不能沒有原子。

原子大致可以分為5大類

1)普通字元作為原子

所謂普通字元,就是大小寫字母,數字等字元

例如:「/5/」   用於匹配字串中是否有5這個字元出現

「/php/」   用於匹配字串中是否有php這個字串出現

2)特殊字元作為原子

在正規表示式裡面,有一些字元是有特殊含義,例如* +?.

如果我們就只想匹配普通的*+?. 的話,必須轉義。轉義字元是乙個反斜槓\

3)非列印字元作為原子

所謂非列印字元,就是字串中的控制符號,例如:空格,回車,製表符(tab)

4)使用通用型字元作為原子

所謂通用型字元,就是指乙個原子可以匹配多個字元。

\d:匹配任意乙個十進位制數字0-9

\d:匹配任意乙個除了十進位制以外的字元

\s:匹配任意乙個非列印字元

\s:除了非列印字元以外的字元可以被匹配上

\w:匹配字母數字和下劃線

\w:匹配除了數字,字母下劃線以外字元

5)自定義原子表作為原子

自定義原子表通過一對[ ]

可以在裡面加上乙個^ 代表不能匹配方括弧裡面的字元

還可以在方括弧裡面使用」   -  「 ,代表的是乙個範圍

元字元所謂元字元,就是用於構建正規表示式的具有特殊含義的字元。例如:+*?

1)限定符

所謂限定符,就是限定乙個原子必須出現多少次:* + ?

*:代表乙個原子出現0次或者多次

+:代表乙個原子出現1次或者多次

?:代表乙個原子要麼出現1次,要麼出現0次

:前面的原子出現幾次

:前面的原子至少出現n次

:前面的原子至少出現n次,最多m次

*:+:

?:2)邊界限定符

^:字串是否以某乙個字串開頭

$:字串是否以某乙個字串結尾

\b和\b

\b :是邊界

\b :  不是邊界

3)點.

可以匹配任何乙個除了換行符以外的字元

4)模式選擇符 |

5) 模式單元

所謂模式單元,就是可以使用()將多個原子組合成乙個更大的原子

one:將小原子組合成了乙個大原子

two:改變元字元的優先順序

three:開啟了獨立的模式,會將小括號裡面的內容存入到緩衝區裡面

被存入到緩衝區裡面的內容可以通過\1 \2 \3來進行反向引用

緩衝區是可以被跳過的,通過乙個?:來跳過緩衝區

6)元字元的優先順序

④ 模式修正符

所謂模式修正符,是對正規表示式功能的一種擴充,增強了正規表示式的處理能力,模式修正符一般是寫在定界符外面

i:忽略大小寫

m:可以匹配多行,換句話說,可以多行查詢

s:主要功能是用來增強點. 的功能

x:可以忽略空格

正規表示式函式

preg_match():檢視乙個字串是否和乙個正規表示式匹配,匹配就返回true,否則返回false

preg_grep():接受兩個引數,乙個是正規表示式,乙個是陣列,將符合條件的元素提出來返回乙個新的陣列,返回的新陣列裡面的元素下標不變

preg_repalce(正則,替換的字串,原來的字串)

除了使用正則的方式,使用字串替換函式也是可以實現字串替換的

str_replace(「要替換的字串」,「新的字串」,要操作的字串,[替換的次數])

使用正則和字串替換函式都可以實現字串的替換,但是正則的功能比字串替換函式要強大一些,但是功能強大的背後,是效率會降低

如果可以是字串替換函式搞定的事兒,就不要去用正則

字串分割

preg_split()

字串處理

explode(分隔符,字串)

implode():將乙個陣列組合成乙個字串

implode(連線符號,陣列)

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...