1. 正则表达式的定义
正则表达式就是记录某种文本规则的字符串。 如: $pattern = '/^[a-zA-Z]\w{5,9}$/';
2. 正则表达式的构成
五大组成部分: 字符簇、限定符、定位符、子表达式和模式修饰符。
字符簇:普通字符组成的集合(特殊字符需要转义,比如\.和\-)。
[abc] 匹配abc中的任何一个字母
[a-z] 匹配任何一个小写字母
[A-Z] 匹配任何一个大小字母
[a-zA-Z] 匹配任何一个字母
[0-9] 匹配任何一个数字
[a] 匹配一个a字母 等价于 a
如果字符簇中只包含一个字符,可以省略两边的中括号。
\d 匹配数字,等价于 [0-9]
\D 匹配非数字
\w 匹配字母、数字和下划线
\W 匹配非(字母、数字和下划线)
\s 匹配任意的空白符
\S 匹配非空白符
. 匹配除换行符以外的任意字符
[^abc] 匹配除了abc之外的任何一个字符
限定符:限定字符串中字符出现的次数。
{1} 限定次数为1 (可以省略)
{3} 限定次数为3
{3,} 限定次数为3次及以上
{1,3} 限定次数为1-3次
* 限定次数为0次及以上 等价于 {0,}
+ 限定次数为1次及以上 等价于 {1,}
? 限定次数为0次或1次 等价于 {0,1}
注意: "/.*/"具有贪婪性,一般需要用?去掉它的贪婪性,如写成"/.*?/"
定位符:定位匹配字符串的位置。
^ 匹配字符串的开头,置于正则表达式的内侧头部
$ 匹配字符串的结尾,置于正则表达式的内侧尾部
子表达式:用小括号将一个正则表达式的局部括起来作为整体去匹配,这样的式子就是子表达式。
模式修饰符:对整个正则表达式进行一定的修饰处理,置于正则表达式的外侧尾部,也就是写在尾部正斜线的后面。
i 正则表达式中的字符簇进行匹配时,不区分大小写
s 正则表达式中的 . 可以包含换行符
u 正则表达式中的字符簇被认为是utf-8的
U 对正则表达式中的量词的贪婪性进行逆转
特殊符号:
| 或匹配
$pattern = "/[a-z]{3}|\d{3}/" 匹配3个小写字母或者匹配3个数字
示例:
匹配邮箱的正则表达式
$pattern = "/^[^_][\w\.-]+@[\w]+(\.\w+)+$/i";或$pattern = "/^[a-zA-Z0-9_\.-]{2,}@[a-zA-Z0-9_\-]{2,}(\.[a-zA-Z0-9]{2,})+$/";
匹配任意两个连续汉字(utf8编码)的正则表达式
$pattern = '/[\x{4e00}-\x{9fa5}]{2}/u';