正则表达式速查表


关于字符组

表达式 说明
[abc] 匹配 "a"b""c" 其中任何一个字符。
[a-c1-3] 匹配 "a""b""c""1""2""3" 其中任何一个字符。
[^abc] 匹配除了 "a""b""c" 之外的任何一个字符。
[^a-c1-3] 匹配除了 "a""b""c""1""2""3" 之外的任何一个字符。
. 通配符,匹配除了少数字符(\n)之外的任意字符。
\d 匹配数字,等价于 [0-9]
\D 匹配非数字,等价于 [^0-9]
\w 匹配单词字符,等价于 [a-zA-Z0-9_]
\W 匹配非单词字符,等价于 [^a-za-z0-9_]
\s 匹配空白符,等价于 [\t\v\n\r\f]
\S 匹配非空白符,等价于 [^\t\v\n\r\f]

关于数量

表达式 说明
{n,m} 连续出现 n 到 m 次。贪婪模式。
{n,} 至少连续出现 n 次。贪婪模式。
{n} 连续出现 n 次。贪婪模式。
? 等价于 {0,1}。贪婪模式。
- 等价于 {1,}。贪婪模式。
* 等价于 {0,}。贪婪模式。
{n,m}? 连续出现 n 到 m 次。惰性模式。
{n,}? 至少连续出现 n 次。惰性模式。
{n}? 连续出现 n 次。惰性模式。
?? 等价于 {0,1}?。惰性模式。
+? 等价于 {1,}?。惰性模式。
*? 等价于 {0,}?。惰性模式。

关于位置

表达式 说明
(ab) 捕获型分组。把 "ab" 当成一个整体,比如 (ab)+ 表示 "ab" 至少连续出现一次。
(?:ab) 非捕获型分组。与 (ab) 的区别是,它不捕获数据。
(good|nice) 捕获型分支结构。匹配 "good""nice"
(?:good|nice) 非捕获型分支结构。与 (good|nice) 的区别是,它不捕获数据。
\num 反向引用。比如 \2,表示引用的是第二个括号里的捕获的数据。

关于括号作用

表达式 说明
(ab) 捕获型分组。把 "ab" 当成一个整体,比如 (ab)+ 表示 "ab" 至少连续出现一次。
(?:ab) 非捕获型分组。与 (ab) 的区别是,它不捕获数据。
(good|nice) 捕获型分支结构。匹配 "good""nice"
(?:good|nice) 非捕获型分支结构。与 (good|nice) 的区别是,它不捕获数据。
\num 反向引用。比如 \2,表示引用的是第二个括号里的捕获的数据。

关于修饰符

表达式 说明
g 全局匹配,找到所有满足匹配的子串。
i 匹配过程中,忽略英文字母大小写。
m 多行匹配,把 ^$ 变成行开头和行结尾。

关于字面量

表达式 说明
字母、数字 匹配字面量本身。比如 /f/,匹配字母 "f"
\0 匹配 NUL 字符。
\t 匹配水平制表符。
\v 匹配垂直制表符。
\n 匹配换行符。
\r 匹配回车符。
\f 匹配换页符。
\xnn 匹配拉丁字符。比如 \xOA 等价于 \n
\uxxxx 匹配 Unicode 字符。比如 \u2028 匹配行终止符,\u2029 匹配段终止符。
\cX 匹配 ctrl+X。比如 \cI 匹配 ctrl+I,等价于 \t
[[\b] 匹配 Backspace 键(特殊记忆)。

关于String方法

表达式 说明
search 返回正则匹配到的第一个子串在目标字符串中的下标位置。
split 以正则匹配到的子串,对目标字符串进行切分。返回一个数组。
match 对目标字符串执行正则匹配操作,返回的匹配结果数组中包含具体的匹配信息。
replace 对目标字符串进行替换操作。正则是其第一个参数。返回替换后的字符串。

关于replace中特殊字符

表达式 说明
$1,$2,…,$99 匹配第 1-99 个分组里捕获的文本
$& 匹配到的子串文本
$` 匹配到的子串的左边文本
$' 匹配到的子串的右边文本
$$ 美元符号

关于RegExp方法

表达式 说明
test 判断目标字符串中是否有满足正则匹配的子串。返回布尔值。
exec 比 match 更强大的正则匹配操作。返回结果与 match 一致。

关于RegExp静态属性

表达式 说明
$1,…,$9 最近一次第 1-9 个分组捕获的数据。
input 最近一次目标字符串,可以简写成 $_
lastMatch 最近一次匹配的文本,可以简写成 $&
lastParen 最近一次捕获的文本,可以简写成 $+
leftContext 目标字符串中 lastMatch 之前的文本,可以简写成 $` 。
rightContext 目标字符串中 lastMatch 之后的文本,可以简写成 $'