学习 · 速查表
日常代码正则速查表
覆盖大多数真实匹配场景的二十个模式与标志位,附可以直接复制的示例。
字符类
| 模式 | 匹配对象 |
|---|---|
\d |
一位数字(0-9) |
\w |
一个单词字符(A-Za-z0-9_) |
\s |
空白字符 |
. |
除换行外的任意字符(加 s 标志时:任意字符) |
[abc] |
a、b、c 中的任意一个 |
[^abc] |
除这些以外的任何字符 |
量词
| 模式 | 含义 |
|---|---|
a* |
零个或多个 |
a+ |
一个或多个 |
a? |
零个或一个 |
a{2,4} |
两到四个 |
a{2,} |
两个或更多 |
分组与或运算
(abc)—— 捕获组(替换时用$1、$2……)。(?:abc)—— 非捕获组。a|b—— 或运算(「a 或 b」)。(?<name>…)—— 命名组。
锚点与边界
^字符串开头(加m时:行首)。$字符串结尾(加m时:行尾)。\b单词边界 ——\bcat\b能匹配 "cat",但不匹配 "category"。
标志位
g—— 全局(找到全部,matchAll需要它)。i—— 忽略大小写。m—— 多行(^/$按行生效)。s—— 点号也匹配换行。u—— unicode 模式(启用\p{…})。
日常模式
| 用途 | 模式 |
|---|---|
| 邮箱(实用版) | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
日期 YYYY-MM-DD |
^\d{4}-\d{2}-\d{2}$ |
| Slug | ^[a-z0-9]+(?:-[a-z0-9]+)*$ |
| 十六进制颜色 | ^#?[0-9a-fA-F]{6}$ |
| 开头/结尾空格 | `^\s+ |
| 提取数字 | \d+ 配 g |
用分组做替换
"2026-09-09".replace(/(\d{4})-(\d{2})-(\d{2})/, "$3/$2/$1")
// "09/09/2026"
贪婪与懒惰
量词默认是贪婪的:a.+b 对上 a1b2b 会匹配整个 a1b2b,取到最后一个可能的 b。加上 ? 就变成懒惰匹配,a.+?b 匹配最短的那个 a1b。当你发现某个模式匹配得太多时,先怀疑贪婪,再怀疑你的字符类。
常见错误
- 忘了
g标志。"aaa".match(/a/)返回一个匹配;加上g会返回全部三个。工具和语言在这上面的行为常常不同。 - 没转义的点号。
.匹配任意字符。要匹配域名或文件名里的字面点号,写\.。 - 锚点太松。
/\d{4}/会在字符串的任意位置匹配。要做整串匹配检查,就用^…$包起来。 - 灾难性回溯。
(a+)+这类嵌套量词碰上长字符串能卡死页面。嵌套要保持浅,并且在上线到校验热路径之前,先用正则测试器拿最坏输入测一遍。
动手练
上面每个模式都先在 ToolsKit 的 正则测试器 里验证,再放进代码里信任它。要拿你真正会校验的真实样本来构造模式,而不是只跑顺利路径,一个难缠的输入顶得上十个干净输入。