13.5.字符类

可以使用字符类指定字符列表以匹配正则表达式中的一个位置。使用方括号([])定义字符类。例如,下面的正则表达式定义了匹配 bagbegbigbogbug 的字符类:

/b[aeiou]g/

字符类中的转义序列

通常在正则表达式中具有特殊含义的大多数元字符和元序列在字符类中“不具有”那些特殊含义。例如,在正则表达式中星号用于表示重复,但是出现在字符类中时则不具有此含义。下列字符类匹配星号本身以及列出的任何其它字符:

/[abc*123]/

但是,下表中列出的三个字符功能与元字符相同,在字符类中具有特殊含义:

元字符

在字符类中的含义

]

定义字符类的结尾。

-

定义字符范围(请参阅后面的“字符类中字符的范围”一节)。

\

定义元序列并撤销元字符的特殊含义。

对于要识别为字面字符(无特殊元字符含义)的任何字符,必须在该字符前面加反斜杠转义字符。例如,下面的正则表达式包含匹配四个符号($\]-)中任意一个符号的字符类。

/[$\\\]\-]/

除能够保持特殊含义的元字符外,下列元序列在字符类中也具有元序列功能:

元序列

在字符类中的含义

\n

匹配换行符。

\r

匹配回车符。

\t

匹配制表符。

\unnnn

匹配具有指定 Unicode 代码点值(由十六进制数字 nnnn 定义)的字符。

\\xnn

匹配具有指定 ASCII 值(由十六进制数字 nn 定义)的字符。

其它正则表达式元序列和元字符在字符类中看作普通字符。

字符类中字符的范围

使用连字符指定字符的范围,例如 A-Za-z0-9。这些字符必须在字符类中构成有效的范围。例如,下面的字符类匹配 a-z 范围内的任何一个字符或任何数字:

/[a-z0-9]/

您还可以使用 \\xnn ASCII 字符代码通过 ASCII 值指定范围。例如,下面的字符类匹配扩展 ASCII 字符集中的任意字符(如 éê):

\\x

反转的字符类

如果在字符类的开头使用尖号 (^) 字符,则将反转该集合的意义,即未列出的任何字符都认为匹配。下面的字符类匹配除小写字母 (a-z) 或数字以外的任何字符:

/[^a-z0-9]/

必须在字符类的开头键入尖号 (^) 字符以表示反转。否则,您只是将尖号字符添加到字符类的字符中。例如,下面的字符类匹配许多符号字符中的任意一个,其中包括尖号:

/[!.,#+*%$&^]/

加支付宝好友偷能量挖...


评论(0)网络
阅读(105)喜欢(0)flash/flex/fcs/AIR