特殊原子
- \d:匹配0-9任意一个字符
- \D:匹配0-9以外任意一个字符
- \w:匹配0-9、a-z、A-Z、_ 中任意一个字符
- \W:匹配0-9、a-z、A-Z、_ 以外的任意一个字符
- \s:匹配任何空白字符,\t、\n(换行)、\r(回车)
- \S:匹配任何非空白字符,与\s相反
- \b:匹配单词边界(不常用)
- \B:匹配非词边界(不常用)
- []:匹配[]里边的任意一个字符
- ^:代表给原子取反,必须在[]里面
- .:匹配除了\n之外的任意一个字符
元字符:修饰原子
- *:匹配前边一个原子至少出现0次或任意次数
- +:匹配前边一个原子至少出现1次或任意次数
- ?:匹配前边一个原子至少出现0次或1次
- {}:限制前边一个原子的出现次数
{m}:匹配m次
{n,m}:匹配n-m次
{m,}:匹配至少m次
{,m}:错误的写法
- ^:匹配字符串的开头
- \A:匹配字符串的开头(不常用)
- $:匹配字符串的结尾
- \Z:匹配字符串的结尾(不常用)
- |:或者的意思
'/{1|2|3}/'
- ():指定子表达式
'/zha(n|g)san/'
模式修饰符
- i:不区分大小写
- m:将字符串视为多行
- s:将字符串视为单行
- x:忽略正则中的空格
- A:和^一样,匹配开头
- U:非贪婪匹配
- .+?:非贪婪匹配
.* 和.+就是匹配全部的意思,加上?就是非贪婪
- .*?:非贪婪匹配
正则函数
- preg_match($pattern, $subject, $matches):
只匹配一次,匹配成功返回1,失败返回0
$pattern:正则表达式
$subject:匹配的信息
$matches:匹配成功返回的结果,存在$matches中,并且为一个数组
- preg_match_all($pattern,$subject,$matches):
匹配所有,其他和上边一样
- preg_replace($pattern,$replace,$str):
如果匹配成功,返回替换后的字符串,否则返回原字符串
- preg_split($pattern,$str):
用给定的字符串进行分割
邮箱正则
123asdjhajk@asdkjs123.sa.sda.com
'/\w+@(\w+.?)+/'
url正则
http://www.baidu.com:80/index.php?a=asd&b=sada
'/https?:\/\/(\w.)+\w+(:\d+)?(\/\w+.\w+\?)?(\w+=\w+&?)*/'