说明
.
匹配除换行符意外的任意字符
\w
匹配字母或数字或下划线
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
[x]
匹配x字符,如匹配字符串中的 a、b 和 c 字符
\W
\w的反义,即匹配任意非字母,数字,下划线和汉字的字符
\S
\s的反义,即匹配任意非空白符的字符
\D
\d的反义,即匹配任意非数字的字符
\B
\b的反义,即不是单词开头或结束的位置
[^x]
匹配除了 x 意外的任意字符,如 [^abc] 匹配除了 abc 这几个字母之外的任意字符
重复
说明
*
重复零次或更多次
+
重复 1 次或更多次
?
重复零次或 1 次
{n}
重复 n 次
{n,}
重复 n 次或更多次
{n,m}
重复 n 到 m 次
贪婪与懒惰
正则表达式默认的情况下,会在满足匹配条件下尽可能的匹配更多内容。如a.*b,用他来匹配 aabab ,它会匹配整个 aabab ,而不会只匹配到 aab 为止,这就是贪婪匹配。
与贪婪匹配对应的是,在满足匹配条件的情况下尽可能的匹配更少的内容,这就是懒惰匹配。
上述例子对应的懒惰匹配规则为:
a.*?b
如果用该表达式去匹配aabab ,那么就会得到 aab 和 ab 这样两个匹配结果。
常用的懒惰限定符如下:
懒惰限定符
说明
*?
重复任意次,但尽可能少重复
+?
重复 1 次或更多次,但尽可能少重复
??
重复 0 次或 1 次,但尽可能少重复
{n,}
重复 n 次以上,但尽可能少重复
{n,m}
重复 n 到 m 次,但尽可能少重复
模式修正符
模式修正符是标记在整个正则表达式之外的,可以看着是对正则表达式的一些补充说明。
常用的模式修正符如下:
模式修正符
说明
i
模式中的字符将同时匹配大小写字母
m
字符串视为多行
s
将字符串视为单行,换行符作为普通字符
x
将模式中的空白忽略
e
preg_replace() 函数在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。
A
强制仅从目标字符串的开头开始匹配
D
模式中的 $ 元字符仅匹配目标字符串的结尾
U
匹配最近的字符串
u
模式字符串被当成 UTF-8
1