TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 正则表达式在线测试工具:高亮匹配、分组、替换

写好一条正则,把要测的文本一行一条贴进来:每行命中了什么、分组取到了什么、替换后长什么样,边输边看。写给 Google Analytics(GA4)、BigQuery 用的正则,切到 GA4 模式:按「整串匹配、区分大小写、RE2 语法」的口径检查,JavaScript 能跑但 GA4 不认的写法会直接标出来。

  • JavaScript / GA4 两种口径
  • RE2 兼容性提示
  • 本地运行
测试工具

测试你的正则

示例是常见的「手机号脱敏」:找出 11 位手机号,中间四位换成星号。注意第 4 行流水号也被误伤了,改一改正则试试,或者点下面的预设换一个场景。

不用写两边的斜杠 /…/。

一行一条,每行单独匹配。

仅 JavaScript 模式。分组用 $1、$2 或 $<名称>。

命中行数

3

至少有一处匹配的行。

测试行数

6

正则长度

24

GA4 报表筛选最多 250 个字符。

检查结果

RE2 / GA4 兼容性和常见笔误。

  • 正常这条也符合 RE2 语法,可以搬到 GA4、BigQuery、Looker Studio、Go 里用。

匹配结果

高亮的是匹配到的内容;橙色表示只匹配了一部分(GA4 整串匹配下不算命中)。

行测试文本结果分组
1客服电话 13800138000,备用 19912345678命中1: 1382: 00133: 8000
2订单号 202611090001未命中—
3座机 010-12345678未命中—
4流水号 813800138000命中1: 1382: 00133: 8000
5+86 15012345678命中1: 1502: 12343: 5678
612345678901未命中—
替换结果
客服电话 138****8000,备用 199****5678
订单号 202611090001
座机 010-12345678
流水号 8138****8000
+86 150****5678
12345678901
全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

分享这组输入:数值写在链接的 # 后面,不会发到服务器。

版本 v1.0更新于 更新记录

结果怎么读

命中、部分匹配、未命中

每一行会得到三种结论之一。中间那种,是 GA4 筛选最常出错的地方。

命中

JavaScript 模式下,这一行至少有一处匹配,所有匹配都会高亮,分组列显示第一处匹配的各个分组。GA4「匹配正则」模式下,整行都被这条正则覆盖才算命中。

部分匹配

只在 GA4「匹配正则」模式出现:正则出现在这一行里,但没从头覆盖到尾。GA4 会把这个值排除在外。要么在正则两边加 .*,要么改用「部分匹配正则」。

未命中

整行里都没找到匹配,大小写不同也算没找到。GA4 的正则区分大小写,chatgpt 匹配不到 ChatGPT。

检查结果

「RE2 不支持」表示这条正则在 GA4、BigQuery、Go 里会报错或结果不同;「注意」是语法没错但多半写错了,比如没转义的点、结尾多一个 |。

匹配用的是你浏览器的 JavaScript 引擎,RE2 独有的写法会先换成等价的 JS 写法再跑。GA4 支持的 RE2 语法范围内,两种引擎结果一致;标了「RE2 不支持」的写法在 GA4 里可能表现不同。

怎么用

三步

不用点「测试」,输入就出结果。

  1. 1

    写正则、选口径

    一般的文本处理、表单校验、日志提取选 JavaScript;要粘进 GA4 渠道分组或报表筛选的选「匹配正则(整串)」或「部分匹配正则」。

  2. 2

    贴真实的测试文本

    一行一条,既要放应该命中的,也要放不该命中的。数据来自报表时,直接导出那一列贴进来。

  3. 3

    看高亮和检查结果

    该命中的都命中、不该命中的都没命中,检查结果里没有「RE2 不支持」,再复制去用。需要替换时在「替换为」里写 $1、$2。

语法速查

常用写法和 RE2 / JavaScript 差异

大多数写法在 JavaScript 和 RE2(GA4、BigQuery、Go 用的引擎)里一样;差别集中在前瞻、后顾、反向引用这些需要回溯的功能上。

  • 匹配中文:JavaScript 用 [\u4e00-\u9fa5],或开 u 标志后用 \p{Script=Han};RE2 写 \p{Han}
  • GA4「匹配正则」等于在正则外面套 ^(?:…)$,并且区分大小写
  • GA4 报表筛选里的正则最多 250 个字符
RE2 与 JavaScript 正则功能对比
写法RE2(GA4)JavaScript
^ $ . * + ? | ( ) [ ] {n,m}支持支持
\d \w \s \b支持(仅 ASCII)支持
懒惰量词 *? +?支持支持
命名分组(?P<n>…) 和 (?<n>…)(?<n>…)
开头的 (?i)支持不支持(用 i 标志)
前瞻 / 后顾不支持支持
反向引用 \1不支持支持
占有量词 / 原子组不支持不支持
重复次数超过 1000不支持支持
完整例子

手机号脱敏,逐行看

正则 (1[3-9]\d)(\d{4})(\d{4}),替换为 $1****$3,JavaScript 模式。

示例正则在 6 行测试文本上的结果
测试文本结果替换后说明
客服电话 13800138000,备用 19912345678命中 2 处138****8000、199****5678全局匹配会找出所有手机号
订单号 202611090001未命中不变没有 1[3-9] 开头的连续 11 位
座机 010-12345678未命中不变座机格式不同
流水号 813800138000命中(误伤)8138****8000手机号藏在更长的数字里也被匹配了
+86 15012345678命中+86 150****5678前面的 +86 不影响
12345678901未命中不变第二位是 2,不在 3–9 之间

要避开第 4 行的误伤,JavaScript 里可以写 (?<!\d)(1[3-9]\d)(\d{4})(\d{4})(?!\d),但这用了前瞻和后顾,切到 GA4 模式会提示 RE2 不支持;在 RE2 里只能改用 (^|\D) 和 (\D|$) 把两边的非数字也匹配进来。

常见错误

正则写错的几种常见情况

下面四种占了大多数「明明测试通过、一用就错」的情况。

以为 GA4 是部分匹配

GA4「匹配正则」里写 blog,只能匹配值恰好是「blog」的行。要包含匹配写 .*blog.*,或用「部分匹配正则」。

忘了大小写

UTM 参数、活动名称按原样保存,Spring_Sale 和 spring_sale 在 GA4 里是两个值。

把 JS 正则直接贴进 GA4

网上很多答案用 ^(?!.*test) 这样的前瞻,RE2 不认。在 GA4 里改用「不匹配」条件。

点没转义、贪婪匹配

google.com 里的点会匹配任意字符;<.*> 会一口气匹配到最后一个 >,要最短匹配写 <.*?>。

常见问题

正则表达式在线测试常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

正则表达式在线测试怎么用?

在上面输入正则(不用写两边的 /),把测试文本一行一条贴进来,结果实时显示:高亮的是匹配到的内容,右边列出分组。要做替换,在「替换为」里写 $1、$2 这样的分组引用。

g、i、m 这些标志怎么设置?

JavaScript 模式默认带 g(找出每行的所有匹配);勾选「忽略大小写」相当于 i。因为每行单独匹配,m(多行)和 s(点匹配换行)在这里用不上。

怎么用正则匹配中文?

JavaScript 常用 [\u4e00-\u9fa5]+ 匹配常用汉字;更完整的写法是开 u 标志后用 \p{Script=Han}。在 RE2(GA4、BigQuery)里写 \p{Han}。

手机号、邮箱的正则怎么写?

大陆手机号常用 ^1[3-9]\d{9}$;邮箱可以用 ^[\w.+-]+@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.[A-Za-z]{2,}$。点上面的「手机号」「邮箱」预设可以直接测试。正则只能查格式,号码是否真实存在要靠短信或邮件验证。

GA4 的「匹配正则」是整串匹配吗?

是。Google 帮助中心说明 GA4 的正则默认是整串匹配、区分大小写:San Francisco 只匹配「San Francisco」,.*San Francisco.* 才会连「South San Francisco」一起匹配。报表筛选另有「部分匹配正则」。

为什么我的正则在 GA4 里报错?

GA4 用 Google 的 RE2 引擎,不支持前瞻 (?=…)、后顾 (?<=…)、反向引用 \1、占有量词和原子组;另外报表筛选里的正则最多 250 个字符。切到 GA4 模式,这些都会被标出来。

和百度统计、TapCub 的筛选通用吗?

基础写法(锚点、分组、字符类、量词、|)在各家工具里基本通用;前瞻、后顾这类高级写法是否支持要看各自的引擎。TapCub 的渠道分类是内置的,看来源不需要自己写正则。

输入的内容会上传吗?

不会,全部在你的浏览器里运行。较短的正则和测试文本会写进分享链接 # 后面的部分,浏览器不会把这部分发给服务器。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie