正则测试器
在线测试正则表达式:高亮匹配结果、列出捕获组(含命名组)、预览 $1 替换效果、开关 g/i/m/s/u/y/d 标志、统计匹配数量与耗时,非法正则给出位置提示,并内置邮箱/URL/手机号/IP/日期预设。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
常用预设
标志
未勾选 g 时只匹配第一处;替换预览与匹配使用同一组标志。
匹配高亮
匹配数量: 2
联系 alice@example.com 或 bob@test.cn,电话 13800138000,时间 2026-10-10。
匹配详情
| # | 位置 | 匹配内容 |
|---|---|---|
| 1 | 3–20 | alice@example.com |
| 2 | 23–34 | bob@test.cn |
捕获组
| 组 | 名称 | 内容 |
|---|---|---|
| 1 | user | alice |
| 2 | domain | example.com |
替换结果
联系 [alice] 或 [bob],电话 13800138000,时间 2026-10-10。
这个工具能做什么
- 写正则时边写边看效果:命中的片段会高亮显示,匹配数量、位置和耗时同时给出,不用来回切到控制台。
- 需要提取分组时看捕获组面板,命名组也会列出来,方便确认 $1、$<name> 到底对应哪一段文本。
- 做批量替换前先预览:填入替换模板就能看到结果文本,确认 $1 的顺序和转义都没写错再上生产。
- 不确定 g、m、s、u 该开哪个时逐个勾选对比,粘日志、多行文本或含 Emoji 的内容时差别很明显。
示例
输入
正则 (?<user>[\w.+-]+)@(?<domain>[\w-]+\.[\w.]+),标志 g,文本「联系 alice@example.com 或 support@example.com」,替换为 [$<user>]
输出
匹配 2 处:alice@example.com(user=alice,domain=example.com)、support@example.com(user=support,domain=example.com);替换结果「联系 [alice] 或 [support]」
未勾选 g 时只处理第一处匹配,替换预览与匹配使用同一组标志,所以这里的替换对两处都生效。
常见问题
为什么我的正则只匹配到第一处?
没勾选 g 标志。没有 g 时 exec 只返回第一个匹配,替换也只替换第一处。粘日志或做批量替换时记得打开全局匹配,另外注意 y 标志是粘性匹配,含义和 g 完全不同。
正则写错了会怎样?
会给出错误类型和猜测的字符位置,例如漏了右括号会指向对应左括号的位置。位置是按括号配对、字符类和量词语法推算出来的提示,用来快速定位,不是引擎的权威报错。
文本太长或匹配太多会被限制吗?
会。测试文本上限 20 万字符,匹配数量上限 2000 条,超出会提示并停止,避免病态正则把标签页拖死。这是保护措施,不是正则本身的问题。
替换里的 $1 和 $<name> 有什么区别?
$1 是按序号引用第 1 个捕获组,$<name> 是按名字引用命名组,需要正则里写了 (?<name>…)。序号在增删分组后容易错位,所以长期维护的替换模板建议用命名组。
测试内容会上传吗?
不会。匹配、替换和高亮都在浏览器里用 JavaScript 正则完成,页面不发任何请求,粘进来的日志也不会离开本机。
关键词:regexregexp正则正则表达式正则测试regex testercapture group捕获组replace