1.常用字符簇
1.1 .(点)代表任意字符,不含换行
1.2 \w代表[a-zA-Z0-9_],即字母数字下划线
1.3 \W代表\w的补集,即出去字母数字下划线的任意字符,在正则中慎用,因为范围太大了。
1.4 \s表示空白符,包括\n\r\t\v等。
1.5 \S,代表\s的补集,表示非空白符
1.6 \d代表[0-9],即数字
1.7 \D \d的补集,即非数字
2.数量限定符
2.1 *匹配前面子表达式0次或多次
2.2 +匹配前面子表达式1次或多次
2.3 \?匹配前面子表达式0次或1次
2.4 {n}是一个非负整数,匹配确定的n次
2.5 {n,m}最少匹配n次,最多匹配m次,m>=n
2.6 {n,}最少匹配n次,这里n的后面别忘记有个逗号,不然就是匹配确定的n次
3.贪婪与非贪婪模式
3.1 php正则默认是贪婪模式,在满足匹配规则的情况下,尽量多的匹配字符
3.2 在数量(*或+{n})限定符后加上?表示是非贪婪模式,在满足规则的情况下,匹配最少的字符。
4.后向引用
4.1后向引用在正则表达式中小括号中匹配的子表达式可以通过\n(n代表第几个引用的正则中第几个子表达式中匹配的值)来在后面的正则匹配中使用,表示前面小括号中匹配的值
5.模式
5.1 模式修饰符,比如在正则后面加上i表示不区分大小写,即/[a-zA-Z]/i等价于/[a-z]/
5.2 s表示单行模式,即将字符串当做一行来匹配
5.3 u模式传入的匹配参数看成unicode字符编码,可以判断中文,例如/^\x{4e00}-\x{9fa5}$/u
6.预言
6.1 ?= 前瞻零宽度断言正预测,举例/\b\w+(?=ing\b)/每向前匹配一个字符,就向前看(即看还没有匹配的字符)是否是ing加单词的结尾,如果是的话,就把ing前面匹配的字符拿出来,匹配成功
6.2 ?!前瞻零宽度断言负预测,和正预测相反判断不等于,举例/\b\w+(?!ing)\w{3}\b/这里\w{3}的意思是要找单词的最后三个字符不是ing结尾的,如果不是,那就取出字符前面的结果拿出来
6.3 ?<=回顾零宽度断言正预测,这里和6.1的前瞻相反,每匹配前进一个字符,就往回看看匹配的字符是否是预测的子表达式中匹配的值,如果是把后面的字符拿出来,匹配成功。
6.4 ?<!回顾零宽度断言负预测