基本語法
- 界定符
- 原子
- 量詞
- 邊界控制
- 模式單元
界定符
表示一個正規表示式的開始和結束
$pattern = '/[0-9]/';
$pattern = '#[0-9]#';
$pattern = '{[0-9]}'; // 不推薦
原子
可見原子
Unicode 編碼表中用鍵盤輸出後肉眼可見的字元
1. 標點 ; ” _ ? . 等等
2. 英文字母數字 a-z, A-Z, 0-9
3. 漢字、日文、阿拉伯文等其他語言文字
4. ∑, ∈, ∮, ≌ 等數理化公式符號
5. 其他可見字元
不可見原子
Unicode 編碼表中用鍵盤輸出後肉眼不可見的字元
1. 換行符 \n
2. 回車 \r
3. 製表符 \t
4. 空格
5. 其他不可見符號
元字元
原子的篩選方式
1. | 匹配兩個或者多個分支選擇
2. [] 匹配方括號中的任意一個原子
3. [^] 匹配除方括號中的原子之外的任意字元
原子的集合
1. . 匹配除換行符之外的任意字元
2. \d 匹配任意一個十進位制數字,即 [0-9]
3. \D 匹配任意一個非十進位制數字,即 [^0-9]
4. \s 匹配一個不可見原子,即 [\f\r\n\t\v]
5. \S 匹配一個可見原子,即 [^\f\r\n\t\v]
6. \w 匹配任意一個數字、字母或下劃線,即 [0-9a-zA-Z_]
7. \W 匹配任意一個非數字、字母或下劃線,即 [^0-9a-zA-Z_]
量詞
1. {n} 表示其前面的原子恰好出現 n 次
2. {n,} 表示其前面的原子最少出現 n 次
3. {n,m} 表示其前面的原子最少出現 n 次,最多出現 m 次
4. * 匹配 0 次、1 次或者多次其之前的原子,即 {0,}
5. + 匹配 1 次或者多次其之前的原子,即 {1,}
6. ? 匹配 0 次或者 1 次其之前的原子,即 {0,1}
邊界控制
1. ^ 匹配字串開始的位置
2. $ 匹配字串結尾的位置
模式單元
1. () 匹配其中的整體為一個原子
修正模式
-
貪婪匹配:匹配結果存在歧義時取其長(人家還想要嘛)
-
懶惰匹配:匹配結果存在歧義時取其短(不要跟我比懶,因為我懶得跟你比)
1. U/u 懶惰匹配/貪婪匹配
2. i 忽略英文字母大小寫
3. x 忽略空白
4. s 讓元字元 . 匹配包括換行符在內所有字元
5. e 配合函式 preg_replace() 使用,可以把匹配來的字串當作正規表示式執行
常見正規表示式
1. 非空:/.+/
2. 保留兩位小數:/\d+\.\d{2}$/
3. 手機號:/^1[3-9]\d{9}$/
4. Email 地址:/^\w+(\.\w+)*@\w+(\.\w+)+$/
5. URL 地址:/^(https?:\/\/)?(\w+\.)+[a-zA-Z]+$/
6. IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
7. 中國大陸郵政編碼:[1-9]\d{5}(?!\d)
8. 身份證:\d{15}|\d{18}
9. 十六進位制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
10. Unicode 編碼中的漢字範圍:/^[u4e00-u9fa5],{0,}$/
11. 中文字元:[\u4e00-\u9fa5]
12. 雙位元組字元(包括漢字):[^\x00-\xff]
13. 空白行:\n\s*\r
14. 首尾空白字元:/^\s|\s$/