1. 程式人生 > >php preg正則表達式的組成部分

php preg正則表達式的組成部分

多次 一個 原子 反向 小括號 轉義字符 span 括號 至少

定界符號
多種都可以,常用為//

原子
最小的一個匹配單位 (放在定界符中),在一個正則表達式中,至少要有一個原子
1,打印字符(a-z A-Z 0-9 ~!@#$%^&*()_+...)和非打印字符
2, 代表一類字符
\d :任意一個數字 [0-9]
\D :任意一個非數字 [^0-9]
\w :任意一個字 a-z A-Z 0-9 _ [a-zA-Z0-9_]
\W :任意一個非字 [^a-zA-Z0-9_]
\s :代表任意一個空白 [\t\n\f\v]
\S :代表任意一個非空白 [^\t\n\f\v]
3,自定義原子表
[fws3] :fws3任意一個字符
[^1-9a-z] :非1-9 a-z的任意一個字符
[2-9x] :2-9或者x的任意一個字符
4,點(.) 能代表所有任意一個字符

元字符
不是單獨使用的,是用來擴展和限定原子的 (寫在定界符號中)
* 用來修飾其前面的原子可以出現0個或多個(任意次) {0,}
+ 用來修飾其前面的原子出現1次或多次 {1,}
? 用來修飾前面的原子出現0次或1次 {0,1}
{n} 用來修飾其前面的原子出現n次
{n,m} 用來修飾其前面的原子出現n到m次,包括n和m
{n,} 用來修飾其前面的原子至少出現n次,包括n
| 是或的關系 ,表示它兩邊的原子,只要一個出現就可以了,但是 | 優先級是最低的
^ 或 \A 表示必須以什麽開始,這個必須寫在正則表達式的最前面
$ 或 \Z 表示必須以什麽結束,這個必須寫在正則表達式的最後面
\b 單詞邊界
\B 不是單詞邊界的部分

模式修正符 (單個字符)
1,模式修正符寫在定界符號 ,放在右邊 "/go*gle/i"
2,模式修正符號,一個字符就是一個功能,可以組合使用
作用:
修正正則表達式的解釋,或擴充正則表達式的功能
i : 不區分大小寫
s : 原子. 可以匹配換行符(\r)
x : 去除正則表達式裏的空白
U :讓 原子. 變得不貪婪 (在. 後面加? 也可以取消貪婪模式,即.*? 或.+?)


其他符號

() (括號)
1,改變優先級
2, 將小原子變成大原子
3,子模式,整個表達式是一個大的模式,小括號中是每個獨立的子模式
4,反向引用
$text = "2014-03-22";
$reg = ‘/\d{4}(-|\/)\d{2}\1\d{2}/‘;
\1引用前面括號裏的模式,即第一個模式 (?:xxx)使括號失去3,4功能


\ (轉義字符)
1,可以將有意義的字符轉成沒有意義的原子字符 \^ \. \+ \‘ \" \?
2, 可以將沒有意義的字符轉成有意義的原子 \t \cx \f \n \r \v
3, 加上 \也沒意義的字符,加不加\都沒區別 \_ \q

實例
匹配網址
$reg = "/(https?|ftps?)\:\/\/(www|mail|bbs)\.(.+?)\.(com|cn|net)([\w\-\/\.\=\?\&\%]*)?/i";

匹配郵箱
$reg = "/\w+([+-.]\w+)*@\w+([-.]\w+)*/";

php preg正則表達式的組成部分