正規表示式考點

2022-09-04 10:24:07 字數 3884 閱讀 8103

文章目錄

一、考點:

1. 手機號碼的正規表示式編寫

2. 延伸:正規表示式組成及編寫方法

1) 正規表示式的作用:分割、查詢、匹配、替換字串

2)正規表示式的組成部分:

① 分隔符:

② 通用原子:

③ 元字元:

④ 模式修正符:

3) 後向引用:將前面匹配到的放到後面

4) 貪婪模式

取消 貪婪模式 的方法:

5) 正在表示式pcre函式

6) 中文匹配

① utf-8漢字編碼範圍是:0x4e00-0x9fa5; utf-8要使用 u模式修正符 使模式字串被當成 utf-8。

② 在ansi(gb2312)環境下, 0xb0-0xf7, 0xa1-0xfe;在ansi(gb2312)環境下,要使用chr將ascii碼轉換為字元

二、解題方法

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

2) 自左向右的順序使用正規表示式的原子核元字元進行拼接;

3) 最終加入模式修正符;

4) 不可死記硬背模式;

5) 練習常見正規表示式(url、email、ip位址、手機號碼等)。

三、真題

1. 至少寫出一種驗證 139手機號碼的正規表示式。

2. 請寫出乙個正規表示式,取出頁面中所有 `img標籤` 中的 `src值`。

一、考點:

1. 手機號碼的正規表示式編寫

2. 延伸:正規表示式組成及編寫方法

1) 正規表示式的作用:分割、查詢、匹配、替換字串

2)正規表示式的組成部分:

① 分隔符:

1) 正斜線(/)【推薦使用】;

2) hash符號(#);

3) 取反符號(`);

② 通用原子:

1) \d: 0-9

2) \d: 除了0-9

3) \w: 數字、字母、下劃線

4) \w: 除了數字、字母、下劃線

5) \s: 空白符

6) \s: 除了空白符

③ 元字元:

1) . : 除了 換行符 之外的任意符

2) * : 出現0次、1次或者多次

3)? : 出現0或1次

4) ^ : 必須以其開頭

5) $ : 必須以其結尾

6) + : 出現1次或多次

7) : 恰巧出現n次

8) : >= n次

9) : n <= 出現次數 <= m

10) : 集合【如:[abc] 表示匹配 a或b或c】

11) ():互相引用,即匹配乙個整體【如:(abc) 表示同時匹配abc】

12) [^] : 取反【如:[^abc] 表示除了a/b/c】

13) | : 或者

14) [-] : 匹配乙個範圍【如:[0-9] 表示匹配0-9】

④ 模式修正符:

1) i : 不區分大小寫

2) m : 將字串通過分隔符進行分割【即將字串中的每一行分別進行匹配】

3) e : 在進行 preg_replace時,可以將匹配的內容進行php語法的處理【php7.0起廢除】

4) s : 修正圓點元字元(.)和換行

5) u : 取消貪婪模式

6) x : 忽略模式中的空白符

7) a : 必須以該模式開頭

8) d : 修正 $對\n的忽略

9) u : 當進行uft-8中文匹配的使用,可以使用

3) 後向引用:將前面匹配到的放到後面

$str = 'abc';

$pattern = '/(.*)/'; // 正規表示式

preg_replace($pattern, '\\1', $str); // 兩個反斜線是為了防止將 \1 轉義掉;\1表示匹配第乙個括號中的內容;

4) 貪婪模式

取消 貪婪模式 的方法:

① 使用 . * ? 取消貪婪模式

$str = 'abcbcd';

// 匹配每乙個標籤中的內容

$pattern = '/.*?/'; // 匹配到了abc和bcd(從開始,匹配到了abc,遇到結束;再次遇到開始,匹配到了bcd,遇到結束)

preg_replace_all($pattern, '\\1', $str);

②使用 . * 後面加 u 取消貪婪模式

$str = 'abcbcd';

$pattern = '/.*/u';

注:不可以同時使用 . * ? 和 u 來取消貪婪;因為 . * ? 代表取消貪婪模式,如果再加乙個 u 又變成了貪婪模式,雙重否定表肯定。

5) 正在表示式pcre函式

preg_match(); // 執行匹配正規表示式

preg_match_all(); // 執行乙個全域性正規表示式匹配

preg_replace(); // 執行乙個正規表示式的搜尋和替換

preg_split(); // 通過乙個正規表示式分隔字串

6) 中文匹配

① utf-8漢字編碼範圍是:0x4e00-0x9fa5; utf-8要使用 u模式修正符 使模式字串被當成 utf-8。

// 該中文為utf-8下的中文

$str = '中文';

// utf-8進行匹配

$pattern = '/[\x-\x]+/u'; // 匹配一次或多次,不區分大小寫

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

var_dump($match);

執行結果:

② 在ansi(gb2312)環境下, 0xb0-0xf7, 0xa1-0xfe;在ansi(gb2312)環境下,要使用chr將ascii碼轉換為字元

$str = '中文';

$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-'.chr(0xfe).']/';

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

var_dump($match);

執行結果:

注:由於我的字符集編碼是 utf-8,因此在執行的時候只會匹配到乙個 問號

二、解題方法

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

2) 自左向右的順序使用正規表示式的原子核元字元進行拼接;

3) 最終加入模式修正符;

4) 不可死記硬背模式;

5) 練習常見正規表示式(url、email、ip位址、手機號碼等)。

三、真題

1. 至少寫出一種驗證 139手機號碼的正規表示式。

// 13988888888

$str = '13988888888';

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

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

var_dump($match);12

345執行結果:

若將字串中的 9 改為 7,則**如下:

$str = '13788888888';

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

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

var_dump($match);

執行結果:

2. 請寫出乙個正規表示式,取出頁面中所有 img標籤 中的 src值。

$str = '

';$pattern = '//i';

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

var_dump($match);

執行結果:

---------------------

原文:

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

非負整數 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...

python面試必備 正規表示式考點彙總

正規表示式英文名叫做regular express,我們約定成俗使用re來簡稱它。re在電腦科學中非常常用,正規表示式通常被用來檢索 替換那些符合某個模式 規則 的文字。我們在字串處理和爬蟲中經常會用到正規表示式,現在整理知識點如下,便於之後的查詢。re的search搜尋首個匹配項 re的findi...