TOOL / 开发 · 文本
正则表达式工作台
把抽象的正则表达式变成看得见的东西:输入模式,实时看到高亮位置、每条命中的内容,以及各个捕获组分别取到了什么。
核心能力
- 实时高亮:测试文本里所有命中位置即时标出,改一个字符立刻重算
- 捕获组拆解:逐条列出命中内容、起止位置,以及每个数字组
$1$2和命名组<year>分别捕获到的值;未参与匹配的组会明确标为「未参与」而不是留空 - 替换预览:填入替换模板后预览替换后的完整结果,变化处以绿色标出,可一键复制
- 分享链接:pattern 与 flags 会编码进 URL hash,复制链接发给同事,对方打开就是同一条正则
- 13 条常用片段:分「网络 / 中文常用 / 文本清洗」三组,点击直接填入
标志位
| 标志 | 含义 |
|---|---|
g | 全局,查找所有匹配 |
i | 忽略大小写 |
m | 多行,^ 和 $ 匹配每一行的行首行尾 |
s | 跨行,. 也能匹配换行符 |
u | Unicode,按码点处理,emoji 与 \u{...} 才正确 |
y | 粘性,只从 lastIndex 所在位置开始匹配 |
替换模板语法
| 写法 | 含义 |
|---|---|
$1 … $99 | 第 N 个捕获组 |
$<name> | 名为 name 的命名捕获组 |
$& | 整个匹配 |
$$ | 字面量 $ |
$0 | 不是合法引用,原样保留 |
未参与匹配的组展开为空字符串;$ 后面紧跟非数字、非 <、非 & 的字符时,该 $ 按字面量处理。
常用片段
| 分组 | 片段 |
|---|---|
| 网络 | 邮箱、URL、IPv4 |
| 中文常用 | 手机号、身份证、日期、中文字符 |
| 文本清洗 | 去 HTML 标签、重复词、空白行、Markdown 标题、十六进制颜色 |
「去 HTML 标签」和「空白行」这类清洗片段会自动把替换框一并填好,点击后直接看效果。
实现上的几个细节
这些是手写实现时容易踩的坑,工具里都已经处理:
- 零长匹配不会死循环:
/a*/这类能在字符串末尾产生空匹配的表达式,迭代时需要手动推进游标 u标志下按码点前进:否则 emoji 会被 UTF-16 代理对切成两半- 不高亮就看不到:
g标志只影响replace/test语义,所以即使没加g,匹配列表和高亮依然展示全部命中 - 命名组不会被数字组截胡:替换回调的参数顺序是
[p1..pN, offset, string, groups],groups在最后 - 高亮片段全部转义:命中内容里的
<、&不会变成真实标签
隐私
正则表达式和测试文本全部在浏览器内处理,不发起任何网络请求。关闭页面后不留存内容。