PHP中正则表达式的用法

来源:互联网 发布:java 多张图片合成pdf 编辑:程序博客网 时间:2024/05/29 14:35
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';

1 0
原创粉丝点击