3.5.8 分组模式
当需要匹配“123-4567”这样的字符串的时候,分组模式就比较重要。分组模式在正则
表达式中用3 个字符来建立:星号(*)、问号(?)和加号(+)。它们的意思分别是匹配“0
个或者多个”、“0 个或者1 个”、“1 个或者多个”前导字符。
下面列举一些分组模式的例子。
(1)/do*g/:该表达式将匹配字母d 后面跟任意个数的字符o,最后再跟一个字符g,如
dg、dog、doog、doooood 等。
(2)/do?g/:该表达式将匹配字母d 后面跟一个字母o 然后跟g,或者字母d 后面直接跟
g,即dog 或者dg,不匹配doog、dooog 等。
(3)/do+g/:该模式将匹配字母d 后面跟一个或者多个字母o,最后跟字母g,如dog、
doog、dooog 等,但是不匹配dg。

132 PHP 网络编程技术与实例
提示 分组模式除了可以应用到单个字符中,还可以应用到任何一个子表达式中。
3.5.9 预定义字符和字符类
很多常用的字符类以及数个字符类都事先被定义成简写的形式,可以方便编程人员使用。
比如可以使用“\d”来代替字符类“[0-9]”来指定任一数字。
预定义字符和字符类如表 3-4 所示。
表 3-4 预定义字符和字符类
字 符含 义字 符含 义
\a 蜂鸣\D 非数字字符(和[^0-9]相同)
\n 换行符\w 单词字符(和[a-zA-Z0-9_]相同)
\r 回车\W 非单词字符
\t 制表符\s 空格字符(和[ \t\n\r\f]相同)
\f 走纸\S 非空格字符
\e 专义\xX 十六进制数字
\d 数字(和[0-9]相同) \cX 匹配相应的控制字符