1、正則表達(dá)式的作用
匹配,分割,查找,替換字符串
2、正則表達(dá)式分隔符:
正斜線(/),hash符號(hào)(#),取反符號(hào)(~ )
3、通用原子:
\d(十進(jìn)制0-9)
\D(\d的取反)
\w(數(shù)字,字母,下劃線)
\W(\w取反)
\s(空白符)
\S(\s取反)
4、元字符
. (除了換行符以外的任意字符)
* (匹配前面的內(nèi)容和,出現(xiàn)0次1次或者多次)
? (出現(xiàn)0次或者1次)
^(以它開頭)
$(以它結(jié)尾)
+(出現(xiàn)一次或者多次)
{n}恰巧出現(xiàn)n次
{n,}出現(xiàn)大于等于n次
{n,m} n<=次數(shù)<=m
[](一個(gè)集合如[abc]就是匹配a或b或c)
()(互相引用,或者代表一個(gè)整體)
[^](取反如[^abc]除了a,b,c)
|(或者)
[-](范圍[0-9]代表匹配0-9)
5、修正模式
i 不區(qū)分大小寫
m 將字符串的每一行分別進(jìn)行匹配
e 對(duì)匹配的結(jié)果做PHP語(yǔ)法處理
s 將字符串視為單行,換行符作為普通字符.
U 取消貪婪模式
x 將模式中的空白忽略.
A 強(qiáng)制僅從目標(biāo)字符串的開頭開始匹配.
D 模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾.
u utf-8中文匹配
6、后向引用
示例:匹配<b></b>中的內(nèi)容

屏幕快照 2017-10-24 下午9.49.04.png
7、貪婪模式
示例:使用.*?取消貪婪模式

屏幕快照 2017-10-24 下午9.53.24.png
8、正則表達(dá)式常用函數(shù)

屏幕快照 2017-10-24 下午9.54.06.png
示例1:匹配以139開頭的11位手機(jī)號(hào)
<?php
//匹配139開頭的11位手機(jī)號(hào)碼
$str = '13988888888';
$pattern = '/^139\d{8}$/';
preg_match($pattern,$str,$match);
var_dump($match);
運(yùn)行結(jié)果:
chenzhitaodeMacBook-Pro:php chenzhitao$ php demo5.php
array(1) {
[0]=>
string(11) "13988888888"
}
示例2:匹配img標(biāo)簽中的所有src屬性
<?php
//匹配所有img標(biāo)簽中的src屬性
$str = '<img alt = "撒旦阿薩德" id = "11" class = "image" src= "my.jpg" />';
$pattern = '/<img.*?src\s*=\s*"(.*?)".*?\/?/i';
preg_match($pattern,$str,$match);
var_dump($match);
運(yùn)行結(jié)果:
chenzhitaodeMacBook-Pro:php chenzhitao$ php demo6.php
array(2) {
[0]=>
string(68) "<img alt = "撒旦阿薩德" id = "11" class = "image" src= "my.jpg""
[1]=>
string(6) "my.jpg"
}