字符、元字符和元序列
Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本
最简单的正则表达式是与字符序列匹配的表达式,如以下示例中所示:
var pattern:RegExp = /hello/;
但是,下列字符(称为元字符)在正则表达式中具有特殊含义:
^ $ \ . * + ? ( ) [ ] { } |
例如,下面的正则表达式所匹配的是字母 A 后跟字母 B 的零个或多个实例(星号元字符表示重复)再跟字母 C:
/AB*C/
在正则表达式模式中包含元字符时若要使其不具有特殊含义,您必须使用反斜杠 (\) 转义字符。例如,下面的正则表达式与顺序依次为字母 A、字母 B、星号和字母 C 的模式匹配:
var pattern:RegExp = /AB\*C/;
“元序列”与元字符类似,在正则表达式中具有特殊含义。元序列由多个字符组成。以下几节提供了有关使用元字符和元序列的详细信息。
关于元字符
下表总结了可以在正则表达式中使用的元字符:
元字符
|
说明
|
^(尖号)
|
匹配字符串的开头。设置 m (multiline) 标志后,尖号还匹配行的开头(请参阅标志和属性)。请注意,尖号用在字符类的开头时表示符号反转而非字符串的开头。有关详细信息,请参阅字符类。
|
$(美元符号)
|
匹配字符串的结尾。设置 m (multiline) 标志后,$ 还匹配换行 (\n) 字符前面的位置。有关详细信息,请参阅标志和属性。
|
\ (反斜杠)
|
对特殊字符的特殊元字符含义进行转义。
此外,如果要在正则表达式文本中使用正斜杠字符,也要使用反斜杠字符,例如,/1\/2/ 匹配字符 1 后跟正斜杠字符和字符 2。
|
.(点)
|
匹配任意单个字符。
只有设置 s (dotall) 标志时,点才匹配换行字符 (\n)。有关详细信息,请参阅标志和属性。
|
*(星号)
|
匹配前面重复零次或多次的项目。
有关详细信息,请参阅数量表示符。
|
+(加号)
|
匹配前面重复一次或多次的项目。
有关详细信息,请参阅数量表示符。
|
?(问号)
|
匹配前面重复零次或一次的项目。
有关详细信息,请参阅数量表示符。
|
( and )
|
在正则表达式中定义组。以下情况下使用组:
限制逻辑“或”字符 | 的范围:/(a|b|c)d/
定义数量表示符的范围:/(walla.){1,2}/
用在逆向引用中。例如,下面的正则表达式中的 \1 匹配模式的第一个括号组中的匹配内容:
/(\w*) is repeated: \1/
有关详细信息,请参阅组。
|
[ and ]
|
定义字符类,字符类定义单个字符可能的匹配:
/[aeiou]/ 匹配所指定字符中的任意一个。
在字符类中,使用连字符 (-) 指定字符的范围:
/[A-Z0-9]/ 匹配从 A 到 Z 的大写字母或 0 到 9 的数字。
在字符类中,插入反斜杠对 ] 和
- 字符:
/[+\-]\d+/ 匹配一个或多个数字前面的 + 或 -。
在字符类中,以下字符(通常为元字符)被看作一般字符(非元字符),不需要反斜杠:
/[$]/£ 匹配 $ 或 £。
有关详细信息,请参阅字符类。
|
|(竖线)
|
用于逻辑“或”操作,匹配左侧或右侧的部分:
/abc|xyz/ 匹配 abc 或 xyz。
|
关于元序列
元序列是在正则表达式模式中具有特殊含义的字符序列。下表说明了这些元序列:
元序列
|
说明
|
{n}
{n,}
和
{n,n}
|
指定前一项目的数值数量或数量范围:
/A{27}/ 匹配重复 27 次的字符 A。
/A{3,}/ 匹配重复 3 次或更多次的字符 A。
/A{3,5}/ 匹配重复 3 到 5 次的字符 A。
有关详细信息,请参阅数量表示符。
|
\b
|
匹配单词字符和非单词字符之间的位置。如果字符串中的第一个或最后一个字符是单词字符,则也匹配字符串的开头或结尾。
|
\B
|
匹配两个单词字符之间的位置。也匹配两个非单词字符之间的位置。
|
\d
|
匹配十进制数字。
|
\D
|
匹配除数字以外的任何字符。
|
\f
|
匹配换页符。
|
\n
|
匹配换行符。
|
\r
|
匹配回车符。
|
\s
|
匹配任何空白字符(空格、制表符、换行符或回车符)。
|
\S
|
匹配除空白字符以外的任何字符。
|
\t
|
匹配制表符。
|
\unnnn
|
匹配字符代码由十六进制数字 nnnn 指定的 Unicode 字符。例如,\u263a 是一个笑脸字符。
|
\v
|
匹配垂直换页符。
|
\w
|
匹配单词字符(A-Z、a-z、0-9 或 _)。请注意,\w 不匹配非英文字符,如 é、ñ 或 ç。
|
\W
|
匹配除单词字符以外的任何字符。
|
\\xnn
|
匹配具有指定 ASCII 值(由十六进制数字 nn 定义)的字符。
|