文章目錄
一、考點:
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...