1.中括号:
可用来表达要匹配的一定范围内的字符或字符列表。
- [0~9] 匹配任何从0到9的十进制数字
- [a~z] 匹配任何从小写a到z的字符
- [A~z] 匹配任何从大写A到Z的字符
- [A~Za~z] 匹配任何从大写A到小写z的字符
2.量词
- p+: 匹配任何至少包含一个p的字符串
- p*: 匹配任何包含零个或多个p的字符串
- p?: 匹配任何包含零个或一个p的字符串
- p{2}: 匹配任何包含两个连续p的字符串
- p{2,3}: 匹配任何包含两个或三个连续p的字符串
- p{2,}: 匹配任何至少包含两个连续p的字符串
- p$: 匹配任何以p结尾的字符串
- ^p 匹配任何以p开头的字符串
- [^a-zA-Z]:匹配任何不包含a-z和从A-Z字符的字符串
- p.p 匹配任何包含字符p、接下来是任何字符、再接下来又是p的字符串
- ^.{2}$: 匹配任何只包含两个字符的字符串
- <b>(.*)</b> 匹配任何被<b>和</b>包围的字符串
- p(hp)* 匹配任何包含一个p,p后面是零个或多个hp的字符串
- ([$](0-9)+) 匹配$42、$560、$3
3. 预定义字符范围(字符类)
- [:alpha:] : 小写和大写字母字符。也可以指定为[A-Za-z]
- [:alnum:] 小写和大写字母字符以及数字。也可以指定为[A-Za-z0-9]
- [:cntrl:] 控制字符,如制表符、退格符或反斜线
- [:digit:] 0-9的数字。也可以指定[0-9]
- [:graph:] ASCII 33-126范围内的可打印字符
- [:lower:] 小写字母字符,也可以指定为[a-z]
- [:punct:] 标点符号字符,包括:~、!@#$%^&*()-_+={}[]:';<>,.?/
- [:upper:] 大写字母字符。也可以指定为[A-Z]
- [:space:] 空白字符,包括空格、水平制表符、垂直制表符、换行、换页、或回车
- [:xdigit:] 十六进制字符,也可以指定为[a-fA-F0-9]
一、 概述
1. 正则表达式的测试地址: http://tool.chinaz.com/regex/
-
二、具体的常用正则表达式
1. 邮箱正则表达式:
1)w[-w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z]{2,14}
2)w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
3)解析:-- "" 叫"跳脱字符"。用于转义一些特殊符号,如".","/"
-- "w" 等价于 [a-zA-Z0-9_] 。也匹配汉字
-- "+" 1到多次还可以写成{1,}
-- 小括号 来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了, ([-+.]w+)*
-- [-+.] 方括号扩起来的部分就是字符域
-- . 匹配除换行符以外的任意字符
4)代码示例
<?php $email = 'sishuinianhua@qq.com'; $preg = '/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/'; $res = preg_match($preg, $email, $preg_res); var_dump(111,$res,$preg_res);exit;
-- preg_match() : http://php.net/manual/zh/function.preg-match.php
2. 网址表达式:
1) [a-zA-z]+://[^s]+
2)解析:
-- ^
> 放在字符域(如:[^w])中表示否定(不包括的意思)——“反向选择”
> 放在表达式之前,表示以当前这个字符开始。(/^n/i,表示以n开头)。
-- s 匹配任意的空白符
三、 附录
1. 常用元字符
代码 说明
. 匹配除换行符以外的任意字符
w 匹配字母或数字或下划线
s 匹配任意的空白符
d 匹配数字
匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
2.常用限定符
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
3.常用反义词
代码/语法 说明
W 匹配任意不是字母,数字,下划线,汉字的字符
S 匹配任意不是空白符的字符
D 匹配任意非数字的字符
B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符