Regex 测试
本地处理正则表达式
54
高亮预览
联系我们 hi@example.org 或 support@example.com,不要回复 test@x.
| # | 匹配 | 位置 | 分组 |
|---|---|---|---|
| 1 | hi@example.org | 5 | hi · example · org |
| 2 | support@example.com | 22 | support · example · com |
使用指南
工具介绍
写正则时最费时间的往往不是写,而是验证:这条表达式到底会匹配到什么、分组捕获到了哪几段。这个页面把正则、测试文本和结果放在同一屏——输入即时匹配、命中处原位高亮,下方表格逐条列出每处命中的位置与各分组捕获的值。
表达式或标志写错时会直接给出错误信息,不必等到贴回代码里才暴露。匹配全程在浏览器本地执行,日志、配置这类不便外发的文本也能直接粘进来试。
使用步骤
- 在正则框填入表达式(不用写两端的斜杠),在后方标志位按需组合 g、i、m、s、u、y。
- 把待测试的文本粘进下方文本域,命中的内容会即时高亮。
- 对照下方表格核对每处匹配的起始位置与各分组捕获值,逐条确认是否符合预期。
- 调整正则或标志,结果实时刷新,不需要手动点执行。
适用场景
- 写日志解析规则时,先拿一段真实日志验证分组能不能稳定抓到时间、级别与消息体。
- 排查表单校验正则为什么放过了不合法的输入,用高亮结果反推表达式的边界。
- 确认 ^ 与 $ 在多行文本里的行为,切到 m 标志前后对比差异。
- 验证提取 URL 查询参数的正则,借分组捕获检查参数名与值有没有被正确切分。
常见问题
- 粘了几十万字的日志,页面提示停止匹配?
- 测试文本上限 100,000 字符,超出后会停止匹配并提示缩减文本。这是防止灾难性回溯把页面卡死——某些表达式在长文本上会指数级展开。把日志截成有代表性的几段分开测,结论通常一样。
- 明明命中几千处,表格却只列到 1000 条?
- 为避免一次渲染上万行卡住页面,表格只展示前 1000 条,但计数显示的仍是真实总数。把正则写得更严格、或把测试文本缩小到目标片段,就能看到具体命中。
- 表达式报语法错误,但看不出错在哪?
- 错误信息来自浏览器构造正则时的报错,显示在输入框下方,通常会指出位置与原因,例如未闭合的分组括号或非法的量词。对照该位置前后检查即可。
- 不加 g 和加了 g 有什么区别?
- 不加 g 只返回第一处命中,表格里就只有一条;加上 g 才会找出全部命中并逐条列出。要验证正则在整段文本上的表现,记得带上 g。
- 我的正则和测试文本会上传吗?
- 不上传。正则编译、匹配与高亮都在当前页面完成,测试文本只留在本机内存中,关闭页面即释放。
基本操作
- 输入正则表达式与测试文本,命中内容实时高亮,下方表格列出每处匹配的位置与分组捕获
- 斜杠后填匹配标志,可组合使用(如 gim);正则或标志语法有误时,错误信息显示在输入框下方
标志说明
- g 全局匹配找出所有命中,不加 g 只返回第一处
- i 忽略大小写;m 多行模式,^ 与 $ 匹配每行的行首行尾
- s 让 . 匹配换行符;u 启用 Unicode 语义(如 emoji 代理对);y 粘性匹配,只从指定位置开始
性能保护
- 测试文本超过 10 万字符会暂停匹配并提示缩减文本,避免灾难性回溯卡死页面
- 命中超过 1000 条时仅渲染前 1000 条,计数仍显示真实总数
安全提示
- 全部计算在浏览器本地完成,正则与文本不会上传服务器