toolgarden.xyz
EN

正则表达式测试

在线测试正则表达式,支持 flags、命名分组、高亮匹配结果,并提供常用正则模板,浏览器本地运行,不上传测试文本。

正则表达式

//g

测试文本

联系我们: hello@example.com, sales@toolgarden.xyz

匹配结果

共 2 个匹配

  • #1位置: 6

    hello@example.com

  • #2位置: 25

    sales@toolgarden.xyz

工具说明

正则表达式用一段模式描述文本中的匹配位置。工具直接使用浏览器 JavaScript RegExp,支持常用 flags、命名分组、全局匹配和高亮,并提供可修改的模板用于邮箱、URL、数字等常见结构。

正则适合识别局部文本模式,不是通用解析器。嵌套语法、完整 HTML、不同方言的日期或自然语言通常更适合专用解析库;过于宽泛或存在灾难性回溯的表达式还会让长文本明显卡顿。

使用步骤

  1. 输入模式和 flags

    模式不要包含宿主语言的外层斜杠;按需要开启 g、i、m、s、u 或 y。

  2. 提供代表性测试文本

    同时加入应匹配、边界情况和不应匹配的样本,避免只验证成功路径。

  3. 检查高亮与分组

    确认匹配次数、完整片段和捕获组,再复制到目标代码并保留同样 flags。

输入与输出示例

命名分组让匹配结果可以按名称取用,比记住第几个括号更可靠。

正则与测试文本
/(?<year>\d{4})-(?<month>\d{2})/g

2026-08 起效,2027-01 到期
匹配结果
匹配 1: 2026-08   year=2026  month=08
匹配 2: 2027-01   year=2027  month=01

支持范围与限制

正则方言
JavaScript 的 RegExp。Python、PCRE、Java 的部分语法在这里不适用
支持的 flags
g 全局、i 忽略大小写、m 多行、s 点匹配换行、u Unicode、y 粘连
命名分组
支持 (?<name>...) 命名捕获,结果中按名称展示
不支持的语法
递归匹配、条件匹配、部分 PCRE 独有的断言写法
性能陷阱
嵌套量词(如 (a+)+)在不匹配的长输入上会导致灾难性回溯,页面可能卡住
处理位置
在浏览器内用原生 RegExp 执行,测试文本不上传

典型使用场景

  • 清理日志与列表

    定位时间戳、ID、空白行或固定前缀,配合代码做替换和提取。

  • 验证输入形状

    对格式有限且规则稳定的编号、路径或标记做客户端快速检查。

  • 把线上匹配失败的用例复现出来

    线上正则漏匹配或误匹配时,把实际输入贴进来逐步调整,比改代码重新部署快得多。

使用前需要知道的事

  • JavaScript 正则与 PCRE、Python、Java 的语法和特性不完全相同,跨语言使用前要重新测试。
  • 没有 g flag 时通常只返回第一个匹配;需要查看全部结果时应开启全局模式。
  • 不要用一个巨大正则完整解析 HTML、XML 或编程语言,结构化解析器更可靠。

相关概念

capture group
用括号记录匹配的一部分,命名分组可通过名称读取,便于后续替换或提取。
catastrophic backtracking
某些重复与分支组合会产生指数级尝试,使特定输入占用大量 CPU。

常见问题

正则测试会上传我的文本吗?
不会。匹配在浏览器本地进行,测试文本不会上传到服务器。
支持哪些标志(flags)和分组?
支持 g、i、m、s 等常用 flags,以及命名捕获分组,匹配结果会在文本中高亮显示。
有常用正则模板吗?
有。工具内置邮箱、URL、手机号等常用模板,可一键套用后再按需修改。
为什么我的正则在 Python 里能用,这里不行?
这里执行的是 JavaScript 的 RegExp。Python 的 `(?P<name>...)` 命名分组、部分断言写法和 PCRE 独有的递归匹配在 JavaScript 里语法不同或不支持。移植正则前需要按目标语言的方言调整。
为什么页面卡住了?
很可能触发了灾难性回溯。像 `(a+)+` 这样的嵌套量词在不匹配的长输入上,回溯次数会指数级增长。请避免嵌套量词,改用更具体的字符类,或者给匹配加上明确的边界。