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