正则表达式测试器

用你的文本测试正则表达式

高亮匹配
2 个匹配项

为什么在浏览器中测试正则表达式?

正则表达式引擎在不同语言之间略有不同:PCRE (PHP)、POSIX (grep)、Perl、Python 的 `re` 和 JavaScript 的正则表达式具有不同的特性。浏览器中的测试使用 JavaScript 引擎 — 正是您在客户端代码、Node.js 或 Inertia 验证规则中运行的内容。

测试器在您输入时高亮匹配,列出每个匹配的捕获组,并显示当前生效的正则标志。错误的模式会清晰地显示语法错误,而不是静默失败。

使用场景

  • 从日志提取字段——把请求 ID、IP、时间戳从无结构日志里抓出来。
  • 校验用户输入——表单提交前先验邮箱、邮编或手机号格式。
  • 批量查找替换——在源代码或 markdown 文本里用 capture group 占位符做大批量改名。
  • 脱敏数据——分享截图前从日志里把邮箱、JWT、信用卡号擦掉。

示例

Extracting emails with capture groups
输入
Pattern: \b([\w.]+)@([\w.]+)\.([a-z]{2,})\b
Flags: gi
Text: Contact [email protected] or [email protected]
输出
Match 1: [email protected]
  Group 1: alice
  Group 2: example
  Group 3: com

Match 2: [email protected]
  Group 1: bob
  Group 2: test
  Group 3: org

常见问题

支持哪种正则表达式风格?

JavaScript / ECMAScript 正则表达式。支持现代浏览器中的回溯,命名组 (`(?<name>...)`),Unicode 模式 (`u` 标志) 和粘性匹配 (`y` 标志)。

为什么我的 PCRE 模式不起作用?

PCRE 具有 JavaScript 正则表达式不支持的特性:递归模式、占有量词、条件模式。JavaScript 满足大多数日常需求,但不包括那些高级情况。

捕获组是如何工作的?

模式中部分用括号括起来会创建一个编号的捕获组。在匹配中,组 1 是第一个 `(...)`,组 2 是第二个,依此类推。使用 `(?:...)` 表示非捕获组。

无限循环的正则表达式会挂起浏览器吗?

灾难性回溯可能会短暂冻结标签。测试器在您的标签中运行,因此错误的模式只会影响此工具 — 如有需要,请关闭并重新打开。

我的模式或测试文本会被上传吗?

不会 — 两者都保留在您的浏览器中。