1.元字符(特殊字符)
* 匹配前面的字符零次或多次 等同于 {0,}
+ 匹配前面的字符一次或多次 等同于 {1,}
? 匹配前面的字符零次或一次 等同于 {0,1}
| 匹配两个或多个选择
^ 匹配字符串的开始位置
$ 匹配字符串结束位置
\b 匹配单词的边界(如空格、横杠,但不包括下划线)
\B 匹配除单词边界以外的部分
[] 匹配方括号中的任一字符
[^] 匹配除方括号中的字符外的任何字符
{m} m 是一个非负整数。匹配确定的 m 次
{m,} m 是一个非负整数。至少匹配m 次
{m,n} 最少匹配 m次且最多匹配 n次
() 表示一个整体
. 匹配除换行之外的任何一个字符
2.预定义元字符
由于某些模式会反复用到,所以可以使用以下预定义类;
\d 匹配一个数字;等价于[0-9]
\D 匹配除数字以外任何一个字符;等价于[^0-9]
\w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]
\W 匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_]
\s 匹配一个空白字符;等价于[\f\n\r\t\v]
\S 匹配除空白字符以外任何一个字符;等价于[^\f\n\r\t\v]
3.匹配字符的开始和结束在某些情况下,需要对匹配范围进行限定,以获得更准确的匹配结果;
"^"置于字符串的开始确保模式匹配出现在字符串首端;
"$"置于字符串的结束,确保模式匹配出现字符串尾端。
如果不加边界限制元字符,将获得更多的匹配结果。
4.匹配任意字符用"."匹配除换行符外任何一个字符
例:
$res = preg_match('/./', "something");
var_dump($res);通常可以使用".*"组合来匹配除换行符外的任何字符
5.匹配包含某个范围的字符
用"[start-end]"匹配包含某个范围的字符
[a-z] 匹配所有的小写字母
[A-Z] 匹配所有的大写字母
[a-zA-Z] 匹配所有的字母
[0-9] 匹配所有的数字
[0-9\.\-] 匹配所有的数字,句号和减号
[\x{4e00}-\x{9fa5}] 匹配所有的中文汉字
6.重复匹配
正则表达式中有一些用于重复匹配的元字符:"?"、"*"、"+"。他们主要的区
别是重复匹配的次数不同。
"?" 匹配前面的字符零次或一次 等同于 {0,1}
"*" 匹配前面的字符零次或多次 等同于 {0,}
"+" 匹配前面的字符一次或多次 等同于 {1,}
"{m}" 匹配确定的 m 次。 m 是一个非负整数;
"{m,n}" 最少匹配 m 次且最多匹配 n 次。 m 和 n 均为非负整数,其中m <= n;
"{m,}" 至少匹配m 次。 m 是一个非负整数;
7.匹配两个或多个选择
用圆括号"(word1|word2|…)"定义包含word1、word2、…的任意字符串的规则
8.模式修正符
i 在和模式进行匹配时不区分大小写
m 将字符串视为多行
s 模式中的圆点元字符 “ . “将匹配所有的字符,包括换行符
x 模式中的空白忽略不计,除非已经转义
U 取消贪婪匹配
模式修正符在正则表达式定界符之外使用。