一般情况下,正则表达式由两部分组成,分别是元字符和文本字符。元字符就是具有特殊含义的字符,例如“?”和“*”等,文本字符就是普通的文本,例如字母和数字等。下面讲解正则表达式的语法规则。
1.方括号([])
方括号内的一串字符是将要用来进行匹配的字符。例如,正则表达式在方括号内的[name]是指在目标字符串中寻找字母 n、a、m、e。[jk]表示在目标字符串中寻找字符j和k。
2.连字符(-)
在很多情况下,不可能逐个列出所有字符。比如,若要匹配所有英文字符,则把 26 个英文字母全部输入会十分麻烦。这样就有如下表示:
[a-z]:表示匹配英文字母小写从a到z的任意字符。
[A-Z]:表示匹配英文字母大写从A到Z的任意字符。
[A-Za-z]:表示匹配英文字母大小写从大写 A到小写z的任意字符。
[0-9]:表示匹配从0到9的任意十进制数。
由于字母和数字的区间固定,因此根据这样的表示方法,即[开始-结束],程序员可以重新定义区间大小,如[2-7]、[c-f]等。
3.点号字符(.)
点号字符在正则表达式中是一个通配符,代表所有字符和数字。例如,“.er”表示所有以 er结尾的三个字符的字符串,可以是 per、ser、ter、@er、&er 等。
4.限定符(+*?{n,m})
加号“+”:表示其前面的字符至少有一个。例如,“9+”表示目标字符串包含至少一个9。
星号“*”:表示其前面的字符不止一个或零个。例如,“y*”表示目标字符串包含零或不止一个y。
问号“?”:表示其前面的字符为一个或零个。例如,“y?”表示目标字符串包含零或一个y。
大括号“{n,m}”:表示其前面的字符有n或m个。例如,“a{3,5}”表示目标字符串包含3个或5个 a。“a{3}”表示目标字符串包含3个 a。“a{3,}”表示目标字符串至少包含3个a。
点号和星号可以一起使用,如“.*”表示匹配任意字符。
5.行定位符(^和$ )
行定位符用来确定匹配字符串所要出现的位置。
如果是在目标字符串开头出现,就使用符号“^”;如果是在目标字符串结尾出现,就使用符号“$”。例如,^xiaoming 是指 xiaoming,只能出现在目标字符串开头,8895$ 是指 8895 只能出现在目标字符串结尾。
可以同时使用这两个符号,如“^[a-z]$”,表示目标字符串只包含从a到z的单个字符。
6.排除字符([^])
符号“^”在方括号内所代表的意义则完全不同,表示一个逻辑“否”,排除匹配字符串在目标字符串中出现的可能。例如,[^0-9]表示目标字符串包含从0到 9“以外”的任意其他字符。
7.括号字符(())
括号字符表示子串,所有对包含在子串内字符的操作都是以子串为整体进行的。括号字符也是把正则表达式分成不同部分的操作符。
8.选择字符(|)
选择字符表示“或”选择。例如,“com|cnlcom.cn|net”表示目标字符串包含 com 或 cn或 com.cn 或 net。
9.转义字符(\)与反斜线(\)
由于“\”在正则表达式中属于特殊字符,如果单独使用此字符,就直接表示作为特殊字符的转义字符。如果要表示反斜杠字符本身,就在此字符前添加转义字符“\”,即“\\”。
10.认证 Email 的正则表达式
在处理表单数据的时候,对用户的 Email进行认证是十分常用的。可以使用正则表达式匹配来判断用户输入的是否为一个 Email 地址。它的格式如下。
^[A-Za-z0-9_.]+@[ A-Za-z0-9_]+\.[ A-Za-z0-9.]+$
其中^[A-Za-z0-9_.]+表示至少有一个英文大小写字符、数字、下划线、点号或者这些字符的组合。@表示 Email 中的“@”。[A-Za-z0-9_]+表示至少有一个英文大小写字符、数字、下划线或者这些字符的组合。\.表示 email 中“.com”之类的点。由于这里点号只是点本身,因此用反斜杠对它进行转义。[A-Za-z0-9.]+$表示至少有一个英文大小写字符、数字、点号或者这些字符的组合,并且直到这个字符串的末尾。

