字符、元字符和元序列

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/ 匹配 abcxyz

关于元序列

元序列是在正则表达式模式中具有特殊含义的字符序列。下表说明了这些元序列:

元序列

说明

{n}

{n,}

{n,n}

指定前一项目的数值数量或数量范围:

/A{27}/ 匹配重复 27 次的字符 A

/A{3,}/ 匹配重复 3 次或更多次的字符 A

/A{3,5}/ 匹配重复 35 次的字符 A

有关详细信息,请参阅数量表示符

\b

匹配单词字符和非单词字符之间的位置。如果字符串中的第一个或最后一个字符是单词字符,则也匹配字符串的开头或结尾。

\B

匹配两个单词字符之间的位置。也匹配两个非单词字符之间的位置。

\d

匹配十进制数字。

\D

匹配除数字以外的任何字符。

\f

匹配换页符。

\n

匹配换行符。

\r

匹配回车符。

\s

匹配任何空白字符(空格、制表符、换行符或回车符)。

\S

匹配除空白字符以外的任何字符。

\t

匹配制表符。

\unnnn

匹配字符代码由十六进制数字 nnnn 指定的 Unicode 字符。例如,\u263a 是一个笑脸字符。

\v

匹配垂直换页符。

\w

匹配单词字符(A-Za-z0-9_)。请注意,\w 不匹配非英文字符,如 éñç

\W

匹配除单词字符以外的任何字符。

\\xnn

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