正则速查表
JavaScript RegExp 速查:字符、字符类、锚点、量词、分组、环视、Flags 与替换引用。
All processing on this page runs locally in your browser unless noted otherwise.
本表对应本站使用的 JavaScript RegExp(非 PCRE / .NET)。
字符与转义
| 语法 | 含义 | 示例 |
|---|---|---|
. | 匹配任意字符(默认不含换行;s 标志下可含换行)。 | a.c → abc, aac |
\d | 数字 0–9。 | \d+ → 42 |
\D | 非数字。 | \D → a |
\w | 单词字符:字母、数字或下划线。 | \w+ → foo_1 |
\W | 非单词字符。 | \W → @ |
\s | 空白字符。 | \s → space/tab |
\S | 非空白字符。 | \S → x |
\t | 制表符。 | — |
\n | 换行。 | — |
\r | 回车。 | — |
\0 | 空字符 NUL。 | — |
\xhh | 两位十六进制表示的字符。 | \x41 → A |
\uhhhh | Unicode 码元(BMP)。 | \u4e2d → 中 |
\cX | 控制字符。 | \cM → CR |
\ | 转义后一个特殊字符。 | \. → literal . |
字符类
| 语法 | 含义 | 示例 |
|---|---|---|
[abc] | 匹配集合中的一个字符。 | [aeiou] |
[^abc] | 匹配不在集合中的字符。 | [^0-9] |
[a-z] | 包含端点的字符范围。 | [A-Za-z] |
[\d\s] | 字符类内可使用转义。 | digit or space |
[[\]] | 字符类中的字面量方括号。 | match [ or ] |
锚点
| 语法 | 含义 | 示例 |
|---|---|---|
^ | 字符串开头(配合 m 时为行首)。 | ^Hi |
$ | 字符串结尾(配合 m 时为行尾)。 | end$ |
\b | 单词边界。 | \bcat\b |
\B | 非单词边界。 | \Bcat |
^…$ + m | 有 m 时,^ / $ 匹配行首行尾。 | with flag m |
量词
| 语法 | 含义 | 示例 |
|---|---|---|
* | 前一项重复 0 次或多次(贪婪)。 | a* → "", a, aa |
+ | 前一项重复 1 次或多次(贪婪)。 | a+ → a, aa |
? | 前一项可选 0 或 1 次(贪婪)。 | colou?r |
{n} | 恰好 n 次。 | \d{4} |
{n,} | 至少 n 次。 | \d{2,} |
{n,m} | n 到 m 次。 | \d{2,4} |
*? | 0 次或多次(懒惰)。 | <.*?> |
+? | 1 次或多次(懒惰)。 | — |
?? | 0 或 1 次(懒惰)。 | — |
{n,m}? | n 到 m 次(懒惰)。 | — |
分组与分支
| 语法 | 含义 | 示例 |
|---|---|---|
(…) | 捕获分组。 | (\d+)-(\d+) |
(?:…) | 非捕获分组。 | (?:https?) |
(?<name>…) | 命名捕获分组。 | (?<year>\d{4}) |
\1 / \k<name> | 反向引用分组。 | (\w+)\s+\1 |
| | 分支(或)。 | cat|dog |
环视
| 语法 | 含义 | 示例 |
|---|---|---|
(?=…) | 正向前瞻。 | \d+(?=px) |
(?!…) | 负向前瞻。 | foo(?!bar) |
(?<=…) | 正向后顾。 | (?<=\$)\d+ |
(?<!…) | 负向后顾。 | (?<!@)\b\w+ |
修饰符
| 语法 | 含义 | 示例 |
|---|---|---|
g | 全局:查找全部匹配。 | — |
i | 忽略大小写。 | — |
m | 多行:^ / $ 匹配行边界。 | — |
s | dotAll:. 匹配换行。 | — |
u | Unicode 模式。 | — |
y | 粘性:从 lastIndex 开始匹配。 | — |
d | 索引:提供匹配位置(需引擎支持)。 | — |
替换引用
| 语法 | 含义 | 示例 |
|---|---|---|
$$ | 插入字面量 $。 | — |
$& | 插入整个匹配。 | — |
$` | 插入匹配前的文本。 | — |
$' | 插入匹配后的文本。 | — |
$1 … $99 | 插入编号捕获组。 | — |
$<name> | 插入命名捕获组。 | — |
How to use
- 按分区浏览,或搜索符号。
- 复制符号后粘贴到测试器的 Pattern 输入框。
- 需要现成例子时打开模板库。
FAQ
所有符号在任意浏览器都可用吗?
大多数可以。命名分组、后顾与 d 标志需要较新的引擎。
和 PHP / Python 有什么不同?
方言不同。测试器里的多语言片段仅作示意;本站匹配始终是 JS RegExp。