元字符
^ (尖号) 匹配字符串的开头。设置 m (multiline) 标志后,尖号还匹配行的开头。请注意,尖号用在字
符类的开头时表示符号反转而非字符串的开头。
$ (美元符号) 匹配字符串的结尾。设置 m (multiline) 标志后, $ 还匹配换行 (/n) 字符前面的位置。
/ (反斜杠) 对特殊字符的特殊元字符含义进行转义。此外,如果要在正则表达式文本中使用正斜杠字符,也要
使用反斜杠字符,例如, /1//2/ 匹配字符 1 后跟正斜杠字符和字符 2。
. (点) 匹配任意单个字符。只有设置 s (dotall) 标志时,点才匹配换行字符 (/n)。
* (星号) 匹配前面重复零次或多次的项目。
+ (加号) 匹配前面重复一次或多次的项目。
? (问号) 匹配前面重复零次或一次的项目。
( 和 ) 在正则表达式中定义组。以下情况下使用组:
• 限制逻辑“或”字符 | 的范围:/(a|b|c)d/
• 定义数量表示符的范围:/(walla.){1,2}/
• 用在逆向引用中。例如,下面的正则表达式中的 /1 匹配模式的第一个括号组中的匹配内容:
/(/w*) is repeated: /1/
[ 和 ] 定义字符类,字符类定义单个字符可能的匹配:
/[aeiou]/ 匹配所指定字符中的任意一个。
在字符类中,使用连字符 (-) 指定字符的范围:
/[A-Z0-9]/ 匹配从 A 到 Z 的大写字母或 0 到 9 的数字。
在字符类中,插入反斜杠对 ] 和- 字符进行转义:
/[+/-]/d+/ 匹配一个或多个数字前面的 + 或 - 。
在字符类中,以下字符(通常为元字符)被看作一般字符(非元字符),不需要反斜杠:
/[$.]/ 匹配 $ 或 . 。
| (竖线) 用于逻辑“或”操作,匹配左侧或右侧的部分:
/abc|xyz/ 匹配 abc 或 xyz。
元序列
{n} 指定前一项目的数值数量或数量范围:
{n,} /A{27}/ 匹配重复 27 次的字符 A。
和 /A{3,}/ 匹配重复 3 次或更多次的字符 A。
{n,n} /A{3,5}/ 匹配重复 3 到 5 次的字符 A。
/b 匹配单词字符和非单词字符之间的位置。如果字符串中的第一个或最后一个字符是单词字符,则也匹
配字符串的开头或结尾。
/B 匹配两个单词字符之间的位置。也匹配两个非单词字符之间的位置。
/d 匹配十进制数字。
/D 匹配除数字以外的任何字符。
/f 匹配换页符。
/n 匹配换行符。
/r 匹配回车符。
/s 匹配任何空白字符(空格、制表符、换行符或回车符)。
/S 匹配除空白字符以外的任何字符。
/t 匹配制表符。
/unnnn 匹配字符代码由十六进制数字 nnnn 指定的 Unicode 字符。例如,/u 263a 是一个笑脸字符。/v 匹配
垂直换页符。
/w 匹配单词字符(A-Z、a-z、0-9 或 _)。请注意, /w 不匹配非英文字符,如é 。
/W 匹配除单词字符以外的任何字符。
/xnn 匹配具有指定 ASCII 值(由十六进制数字 nn 定义)的字符。
字符类需要转义的字符(一般的元字符和元序列在字符类中丢失特殊含义)
] 定义字符类的结尾。
- 定义字符范围。
/ 定义元序列并撤销元字符的特殊含义
/n 匹配换行符。
/r 匹配回车符。
/t 匹配制表符。
/unnnn 匹配具有指定 Unicode 代码点值(由十六进制数字 nnnn 定义)的字符。
/xnn 匹配具有指定 ASCII 值(由十六进制数字 nn 定义)的字符。
反转字符类
如果在字符类的开头使用尖号 (^) 字符,则将反转该集合的意义,即未列出的任何字符都认
为匹配。下面的字符类匹配除小写字母 (a-z) 或数字以外的任何字符:/[^a-z0-9]/
数量标识符
* (星号) 匹配前面重复零次或多次的项目。
+ (加号) 匹配前面重复一次或多次的项目。
? (问号) 匹配前面重复零次或一次的项目。
{n} 指定前一项目的数值数量或数量范围:
{n,} /A{27}/ 匹配重复 27 次的字符 A。
和 /A{3,}/ 匹配重复 3 次或更多次的字符 A。
{n,n} /A{3,5}/ 匹配重复 3 到 5 次的字符 A。
标志
g (global) 匹配多个匹配。
i (ignoreCase) 不区分大小写的匹配。应用于 A-Z 和 a-z 字符,但不能应用于扩展字符,如 é 和 é。
m (multilane) 设置此标志后, $ 和 ^ 可以分别匹配行的开头和结尾。
s (dotall) 设置此标志后, . (点)可以匹配换行符 (/n)。
x (extended) 允许扩展的正则表达式。您可以在正则表达式中键入空格,它将作为模式
的一部分被忽略。这可使您更加清晰可读地键入正则表达式代码。