正則表達式就是用某種模式去匹配一類字符串的一種公式。
PHP中的正則表達式
PHP中有兩套正則函數preg和ereg(5.3以后不再推薦使用)
正則表達式的組成
- 分隔符:除了字幕、數字、反斜線、空白字符之外的任何字符
- 表達式:由一些特殊字符和非特殊字符串組成
- 修飾符:用于開啟或者關閉某種功能
正則表達式中的元字符
- 常用元字符
元字符 | 描述 |
---|---|
. | 匹配除換行符以外的任意字符 |
\w | 匹配字母、數字、下劃線、漢字 |
\s | 匹配任意空白符 |
\d | 匹配數字 |
\b | 匹配單詞的開始或結束 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結束 |
- | 表示范圍 |
[] | 匹配括號中任意一個字符 |
*、+、? | 量詞 |
- 例子
正則表達式 | 匹配內容 |
---|---|
\ba\w*\b | 匹配以字母a開頭的單詞 |
\d+ | 匹配1個或更多連續的數字 |
\b\w{6}\b | 匹配剛好6個字符的單詞 |
注意:單詞指的是字母或者數字
- 量詞
限定符代碼 | 描述 |
---|---|
* | 重復0次或更多次 |
+ | 重復一次或更多次 |
? | 重復0次或一次 |
{n} | 重復n次 |
{n,} | 重復n次或更多次 |
{n,m} | 重復n到m次 |
- 轉義字符:\
- 反義
元字符 | 描述 |
---|---|
\W | 匹配不是字母、數字、下劃線、漢字 |
\S | 匹配非空白符 |
\D | 匹配非數字 |
\B | 匹配不是單詞的開始或結束的位置 |
[^x] | 匹配除了x以外的字符 |
[^aeiou] | 匹配除了aeiou之外的字符 |
注意:反義不可多用,因其擴大了匹配范圍,可能匹配到不是原來要的
- 分支:|
例子:
(c|h|f|to)at : 匹配cat,hat,fat,toat
[ch]at == (c|h)at
注意: 括號可有可無,但是正則匹配的規則是:從左到右測試每個條件,如果滿足了某個分支,就不會再考慮其他分支