ProxyPin 正则表达式测试 实时匹配验证
为什么需要正则测试工具
ProxyPin 多处需要正则:
- 域名过滤:
.*\.myapp\.com匹配所有子域 - 请求重写:
api\.v1\.example\.com匹配生产 API - 请求屏蔽:
**/*google-analytics*屏蔽追踪 - JS 脚本:
request.url.match(/\/api\/v(\d+)/)提取版本号
正则写错了:
- 域名过滤可能一条都不匹配(白名单漏了)
- 或者匹配了不该匹配的(黑名单误伤)
- JS 脚本里 match 返回 null 导致异常
在正则测试器里先验证再配置,避免规则上线后才发现问题。
ProxyPin 正则测试器
在工具箱中找到「正则表达式」入口:
- 左侧输入正则模式
- 右侧粘贴测试字符串
- 实时显示:
- 匹配成功的高亮位置
- 捕获组内容
- 匹配失败时提示原因
常用正则模式速查
域名匹配
# 匹配所有子域
.*\.example\.com
# 只匹配 api 子域
api\.example\.com
# 多个域名(用 | 分隔)
api\.myapp\.com|cdn\.myapp\.com
# 排除 google-analytics(负向前瞻)
^(?!.*google-analytics).*
URL 路径匹配
# 匹配 /api/v1/ 下所有请求
/api/v1/.*
# 匹配 /user/ 开头的路径
/user/.*
# 精确匹配某个接口
^https://api\.myapp\.com/users/profile$
捕获组
# 捕获版本号
/api/v(\d+)/.*
# 捕获域名的子域部分
([a-z]+)\.example\.com
捕获组在请求重写中特别有用——$1、$2 引用捕获的内容做替换。
常见正则陷阱
1. 忘记转义点号
# ❌ 错误:点号匹配任意字符
api.example.com
# ✅ 正确:转义后只匹配字面点
api\.example\.com
2. 贪婪 vs 非贪婪
# ❌ 贪婪匹配:可能一次匹配太多
https://.*\.com
# ✅ 非贪婪:最短匹配
https://.*?\.com
3. glob 语法 vs 正则
ProxyPin 的请求屏蔽支持 glob 语法(**/*analytics*),但重写和脚本用的是正则。两种语法容易搞混:
| 场景 | 语法 | 通配符 |
|---|---|---|
| 请求屏蔽 | glob | * 单段、** 多段 |
| 请求重写 | 正则 | .* 任意、\d+ 数字 |
| JS 脚本 | 正则 | JavaScript RegExp |
配合域名过滤使用
写好的正则在测试器里验证通过后,直接复制到域名过滤或请求重写的 URL 匹配框里——不用再重写一遍,避免手误。