正则表达式备忘单
JavaScript正则表达式备忘单
普通字符
| 表达式 | 描述 |
|---|---|
. 或 [^\n\r] | 除换行符或回车符之外的任意字符 |
[A-Za-z] | 字母 |
[a-z] | 小写字母 |
[A-Z] | 大写字母 |
\d 或 [0-9] | 数字 |
\D 或 [^0-9] | 非数字 |
_ | 下划线 |
\w 或 [A-Za-z0-9_] | 字母、数字或下划线 |
\W 或 [^A-Za-z0-9_] | \w 的反义 |
\S | \s 的反义 |
空白字符
| 表达式 | 描述 |
|---|---|
| 空格 |
\t | 制表符 |
\n | 换行符 |
\r | 回车符 |
\s | 空格、制表符、换行符或回车符 |
字符集
| 表达式 | 描述 |
|---|---|
[xyz] | x、y 或 z 中的一个 |
[^xyz] | 非 x、y 和 z |
[1-3] | 1、2 或 3 中的一个 |
[^1-3] | 非 1、2 和 3 |
- 可将字符集视为对方括号内包含的单个字符进行
OR运算。 - 在开方括号
[之后使用^来"取反"字符集。 - 在字符集内部,
.表示字面意义上的句点。
需要转义的字符
字符集外部
| 表达式 | 描述 |
|---|---|
\. | 句点 |
\^ | 脱字符 |
\$ | 美元符号 |
| | 管道符 |
\\ | 反斜杠 |
\/ | 正斜杠 |
\( | 左括号 |
\) | 右括号 |
\[ | 左方括号 |
\] | 右方括号 |
\{ | 左花括号 |
\} | 右花括号 |
字符集内部
| 表达式 | 描述 |
|---|---|
\\ | 反斜杠 |
\] | 右方括号 |
^只有紧跟在字符集的开方括号[之后时才需要转义。-只有出现在两个字母或两个数字之间时才需要转义。
量词
| 表达式 | 描述 |
|---|---|
{2} | 恰好 2 个 |
{2,} | 至少 2 个 |
{2,7} | 至少 2 个但不超过 7 个 |
* | 0 个或多个 |
+ | 1 个或多个 |
? | 恰好 0 个或 1 个 |
- 量词放在被限定的表达式之后。
边界
| 表达式 | 描述 |
|---|---|
^ | 字符串开头 |
$ | 字符串结尾 |
\b | 单词边界 |
- 单词边界匹配的工作原理:
- 在字符串开头,如果第一个字符是
\w。 - 在字符串内部的两个相邻字符之间,如果第一个字符是
\w而第二个字符是\W。 - 在字符串结尾,如果最后一个字符是
\w。
- 在字符串开头,如果第一个字符是
匹配
| 表达式 | 描述 |
|---|---|
foo|bar | 匹配 foo 或 bar |
foo(?=bar) | 匹配 foo,前提是其后紧跟着 bar |
foo(?!bar) | 匹配 foo,前提是其后不跟着 bar |
(?<=bar)foo | 匹配 foo,前提是它跟在 bar 之后 |
(?<!bar)foo | 匹配 foo,前提是它不跟在 bar 之后 |
分组与捕获
| 表达式 | 描述 |
|---|---|
(foo) | 捕获组;匹配并捕获 foo |
(?:foo) | 非捕获组;匹配 foo 但不捕获 foo |
(foo)bar\1 | \1 是对第 1 个捕获组的反向引用;匹配 foobarfoo |
- 捕获组仅在以下方法中有意义:
string.match(regexp)string.matchAll(regexp)string.replace(regexp, callback)
\N是对第N个捕获组的反向引用。捕获组从 1 开始编号。