正则表达式英文称Regex,即Regular Expression。正则表达式可以有助于完成一些复杂的模式匹配,在各种程序中都有应用,PHP支持两种风格的正则表达式的语法:POSIX和Perl。正则表达式通过一些特殊字符作为通配符可以代替除换行符(\n)外的字符来进行匹配,如.at就可匹配cat, sat, mat等字符(”.”在正则表达式中用于匹配任意单个字符),可以通过限定范围来进行匹配,如果要匹配小写字母的话,也可以使用[a-z]at,若要添加大小字母,则可使用[a-zA-Z]at。
也可以限定更小的字母集合,如[aeiou],如果要排除某一字符集合,则可使用类似[^a-z]的正则表达式。
POSIX风格的正则表达式预置了一些字符类
[:digit:] 数字0到9
[:alnum:] 数字及字母0到9或A到Z或a到z
[:alpha:] 字母A到Z或a到z
[:blank:] 制表符或空格
[:xdigit:] 十六进制数字
[:punct:] 标点符号 . , " ' ? ! ; :
[:print:] 所有可打印的字符
[:space:] 空白字符
[:graph:] 除空格外所有可打印的字符
[:upper:] 字符A到Z
[:lower:] 字符a到z
[:cntrl:] 控制符
有关重复
使用”*”表示字符可出现0次或更多次,而”+”表示字符可出现1次或更多次(至少出现一次)(还有一个问号字符?,表示出现0次或1次)。如(very )*large可以匹配large, very large, very very large等等。您也可以指定字符出现的次数及范围,如(very){1, 3},表示 very可重复1到3次,而(very){4}则表示very重复4次。
定位到字符串的开始或结尾
分别使用两个符号:^和$,前则表示出现在开始,后者表示结尾,如a+$表示结尾出现一个或多个a, ^.{2}表示以任意两个字符开始。
分支
可使用”|”字符进行多选择匹配,如com|edu|net则表示匹配3者中的一个。
特殊字符的匹配
正则表达式中要匹配一些特殊字符时需要在特殊字符前加一个反斜杠(\),比如要匹配\\,则需使用\\\\,而匹配$则需要使用\$。主要的特殊字符有\^$.|()*+{}?这几个。