正则是查询的艺术。
除非不存在,否则就一定找得到。
正则验证工具:
regexpal、或百度正则验证工具

正则定界符:
正则中用到的字符不能用作定界符
\反斜线是正则中的转义字符
/和#可以用作定界符,注意:如果正则中用到,需要用反斜线进行转义
!和{}也可以用作定界符(不常见)
规范推荐:/和#作为正则定界符。

正则中的原子:
正则表达式的最小单位,也是用户需要匹配的内容。
一个正确的正则表达式中至少要有一个原子。

普通原子:可见与不可见
如:
直接输入匹配的字符(可见)
/n换行符(不可见)

原子集合:[a-z]、[A-Z]、[0-9]
类原子:集合的简写
如:
\d:匹配任意一个整数,等价于[0-9]
\d+:+表示1个或多个整数,等价于[0-9]+

\w:正则运算符,+表示前面的原子至少要出现一次或多次
\w+:表示所有的大小写字母或下划线集合(其实就是一个有效的php标识符)

注:正则表达式中不允许直接写中文,因为中文存在不同的编码集。
中文字符集:
GBK(2个字节表示一个中文字符)
UTF-8(3个字节表示一个中文字符)
必须将中文转为unicode编码(还适用日文和韩文等多字节字符)可百度搜索工具进行转换。

正则中的元字符:
元:与同义,通用。
元字符是原子的解释器,必须配合原子一起用
元字符是原子的保镖,原子在哪里元字符就在哪。
如:
.:匹配换行符\n之外的所有字符
.+:匹配所有字符
^:脱字符,单独使用是限制起始原子,放在方括号中是取反,如:1 取除了\d+以外所有的字符
元字符也可以出现在中间,如:
p.p:.可以表示p和p中间的任意字符

w{2}:只匹配2个w
w{2}$:要求2个w后面不允许有任何内容
$:限制必须以前面的原子结尾的字符才可以匹配成功。

正则中的模式修正符:
模式修正符对整个正则有效,所以要写在正则定界符外部,如:/\w+/i
i:不区分大小写
m:^$忽略换行符
s:匹配所有

匹配手机号码:
国内手机号码都是由11位整数字符组成
必须1开头,紧跟后2位对应不同运营商
1\d{10}:匹配所有1开头的整数
13-8\d{8}:匹配所有的手机号

匹配邮箱地址:
80360650@qq.com
irils@qq.com
irils.irils@qq.com
^\w+(.\w+)*@\w+(.\w+)$
^:限制只能是某些字符↓
\w+:至少要有一个合法标识符
(.w+):作为单独原子表示.后面的二级地址
*:是元字符,表示前面的原子可以出现0次,1次或多次。表示二级前缀可有可无。
$:结束邮箱地址


  1. \d+