正则表达式测试

正则表达式是解析日志、校验表单与提取字段的利器,但贪婪量词与捕获组容易写出意外匹配。本工具实时高亮匹配结果、支持 flags 与替换预览,全部在浏览器本地运行。编写 UUID、semver 或 cron 表达式规则前,可结合 uuid-generator、semver-calculator 与 cron-parser 的样例做验证。

阅读完整指南: 正则表达式实战:从入门到排错 →

隐私提示:本地解析,不上传服务器。

↓ 在下方输入区粘贴内容,结果会立即显示

正则表达式
标志 flags
替换文本(可选)

测试字符串

在下方输入要匹配的文本。

输出结果

匹配结果

#1 @16: "100"
#2 @30: "2026"

注释说明

匹配说明

共找到 2 处匹配。

正则表达式是解析日志、校验表单与提取字段的利器,但贪婪量词与捕获组容易写出意外匹配。本工具实时高亮匹配结果、支持 flags 与替换预览,全部在浏览器本地运行。编写 UUID、semver 或 cron 表达式规则前,可结合 uuid-generator、semver-calculator 与 cron-parser 的样例做验证。

快速开始

  1. 填写 pattern

    不需要两侧斜杠; 如 \d+ 匹配数字。

  2. 设置 flags

    常用 g 全局、m 多行、i 忽略大小写。

  3. 查看匹配

    结果列出索引与捕获组; 可选填写替换文本。

什么时候用

校验表单、解析日志、提取接口字段前; 先在工具里验证正则是否正确。

典型工作流

使用正则表达式测试器的典型场景包括:当您需要快速验证一个正则表达式是否匹配预期的文本模式时,直接在这里输入表达式和测试文本即可。例如,开发时检查邮箱格式的正则是否正确,或在处理日志时筛选特定错误信息。

操作流程很简单:1) 在顶部输入正则表达式;2) 在中间框粘贴测试文本;3) 实时查看匹配结果。匹配项会高亮显示,捕获组会单独列出。您还可以测试替换操作,这在批量修改文本时特别有用。

贪婪与惰性量词

.* 贪婪匹配尽可能多;.*? 惰性匹配尽可能少。解析 HTML 或日志时,贪婪常吞掉过多内容导致捕获组为空。先用小样本验证,再应用到生产 regex。

多行模式 m 使 ^ $ 匹配行首行尾;s 使 . 匹配换行。flags 组合错误是日志解析失败主因。regex-practical-guide 深入讲解边界案例。

ReDoS 与性能

嵌套量词 (a+)+ 可能对长输入 catastrophic backtracking。生产环境对用户可控输入做 regex 时,限制输入长度或改用 parser。本工具适合开发验证,非服务端执行 untrusted pattern。

邮箱、URL 的「完美 regex」往往过度复杂;实用中 split validation:url-parser 拆 URL,uuid-generator 样例验证 UUID pattern。

替换预览工作流

替换预览适合批量脱敏日志:用捕获组保留结构、替换 email 为 [REDACTED]。确认替换结果后再跑 pii-scanner 二次检查。

与 json-formatter 无关但常串联:从 JSON 字符串提取字段值到 regex 测试文本。

从工单摘录到可提交 pattern

流程:脱敏样本 → 单字段 pattern → 组合 → 负例测试 → 写入仓库 fixture。跳过负例是生产漏匹配的主因。与 regex-log-parsing-playbook 中的事故流程对齐,本工具负责交互式试验,git 负责冻结版本。

提取 JSON 后用 json-formatter 确认;URL 用 url-parser。需要讲解 flags 与 ReDoS 时链到 regex-practical-guide。

替换预览与二次扫描

用替换预览把邮箱、Bearer、JWT 形串换成占位符后,再跑 pii-scanner。只依赖一个「完美」regex 脱敏并不够——模式总会漏。替换完成后再 token-counter,避免把密钥算进 prompt 预算。

大文件请先截取;浏览器卡顿时改用 ripgrep。生产引擎若为 RE2,避免依赖 JS 独有的回溯特性。

日志字段提取的分层写法

先为时间戳、level、service 写三个小 pattern 并分别用正/负例验证,再组合成整行表达式。一大段「万能 .*」难维护且易 ReDoS。提取后的 JSON 片段丢进 json-formatter;IP/URL 再分别用专用工具复核。

把样例日志(脱敏后)与期望捕获组写成表,作为 PR 附件。生产引擎若非 JS,在目标引擎复测同一套样例。

迁移、方言差异与文档化

从 Python/PCRE 迁到 JS(或相反)时,重点核对:贪婪默认、行首行尾、命名分组、lookbehind、Unicode 类。在本工具用同一语料切换 flags 观察差异,并在注释中写明「目标引擎 + flags」。

禁止在工单里只丢「最终正则」不附样例。半年后无人能安全修改。配套阅读 regex-practical-guide 与 regex-log-parsing-playbook。

变更管理:谁改了生产正则

生产解析规则应像代码一样评审:PR 描述动机、附本工具截图或文本对照、列出新增负例。热更新正则要有回滚开关。把「看起来能跑」留在个人实验;仓库才是真相来源。

若正则用于脱敏,替换后必须二次 pii-scanner。再 token-counter,确保密钥未进入模型预算。

示例

匹配数字

Input

Towalles 2026

pattern: \d+ 匹配 2026

FAQ

为什么无匹配?

检查是否缺少 g flag; 或 pattern 需要转义(如 \. 匹配点号)。

为什么我的正则表达式在某些情况下匹配失败?

常见原因包括:1) 未考虑多行模式(需要添加'm' flag);2) 未转义特殊字符如'.'或'*';3) 字符大小写敏感(可添加'i' flag忽略大小写)。建议使用工具高亮功能逐步调试,或参考我们的正则语法速查表。

为何无匹配?

检查 g flag、转义(\\\\. 匹配点号)、或 pattern 锚点 ^$。

支持 lookbehind 吗?

取决于浏览器 JS 引擎;复杂断言先在现代 Chrome/Firefox 验证。

能处理 MB 级日志吗?

大文本可能卡顿;截取相关片段或改用 ripgrep。

本地运行吗?

是,pattern 与文本均不上传。

命名分组都支持吗?

现代浏览器 JS 支持 (?<name>…);若生产引擎不同,在目标引擎再验证一次。

如何避免 ReDoS?

避免嵌套量词、限制输入长度、用字符类替代 .*,并在合成语料上压测。

该用贪婪还是非贪婪?

默认贪婪;当需要最短匹配且边界清晰时用 ?。优先用明确字符类缩小匹配,而不是依赖懒惰量词补救。

多行模式什么时候开?

当 ^/$ 应匹配每行行首行尾时开启。处理整文件单一字符串时通常关闭,改用明确分隔符。

多行模式怎么开?

使用 m 标志让 ^ $ 匹配行首行尾;用 s(若引擎支持)让 . 匹配换行。先在小样例验证再放大文件。

贪婪与非贪婪如何选?

默认贪婪常吃太多;字段提取优先进非贪婪或明确字符类。用替换预览观察边界。