1、正则表达式的作用
匹配,分割,查找,替换字符串
2、正则表达式分隔符:
正斜线(/),hash符号(#),取反符号(~ )
3、通用原子:
\d(十进制0-9)
\D(\d的取反)
\w(数字,字母,下划线)
\W(\w取反)
\s(空白符)
\S(\s取反)
4、元字符
.
(除了换行符以外的任意字符)
*
(匹配前面的内容和,出现0次1次或者多次)
?
(出现0次或者1次)
^
(以它开头)
$
(以它结尾)
+
(出现一次或者多次)
{n}
恰巧出现n次
{n,}
出现大于等于n次
{n,m}
n<=次数<=m
[]
(一个集合如[abc]就是匹配a或b或c)
()
(互相引用,或者代表一个整体)
[^]
(取反如[^abc]除了a,b,c)
|
(或者)
[-]
(范围[0-9]代表匹配0-9)
5、修正模式
i 不区分大小写
m 将字符串的每一行分别进行匹配
e 对匹配的结果做PHP语法处理
s 将字符串视为单行,换行符作为普通字符.
U 取消贪婪模式
x 将模式中的空白忽略.
A 强制仅从目标字符串的开头开始匹配.
D 模式中的美元元字符仅匹配目标字符串的结尾.
u utf-8中文匹配
6、后向引用
示例:匹配<b></b>中的内容
7、贪婪模式
示例:使用.*?
取消贪婪模式
8、正则表达式常用函数
示例1:匹配以139开头的11位手机号
<?php
//匹配139开头的11位手机号码
$str = '13988888888';
$pattern = '/^139\d{8}$/';
preg_match($pattern,$str,$match);
var_dump($match);
运行结果:
chenzhitaodeMacBook-Pro:php chenzhitao$ php demo5.php
array(1) {
[0]=>
string(11) "13988888888"
}
示例2:匹配img标签中的所有src属性
<?php
//匹配所有img标签中的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);
运行结果:
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"
}