13.4.字符、元字符和元序列
最简单的正则表达式是与字符序列匹配的表达式,如以下示例中所示:
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)。有关详细信息,请参阅标志和属性。 |
*(星号) |
匹配前面重复零次或多次的项目。 有关详细信息,请参阅数量表示符。 |
+(加号) |
匹配前面重复一次或多次的项目。 有关详细信息,请参阅数量表示符。 |
?(问号) |
匹配前面重复零次或一次的项目。 有关详细信息,请参阅数量表示符。 |
( 和 ) |
在正则表达式中定义组。以下情况下使用组:
有关详细信息,请参阅组。 |
[ 和 ] |
定义字符类,字符类定义单个字符可能的匹配: /[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 定义)的字符。 |
加支付宝好友偷能量挖...