自定义规则详解

这是一篇进阶参考文档,重点不是教您第一次怎么写,而是把统一自定义规则的真实行为讲清楚:字段是什么、运算符怎么解释、为什么会冲突、最终哪条规则会胜出。

统一规则模型

短信卫士现在的自定义规则是一套统一模型,而不是两套独立系统。每条规则都可以同时携带号码条件和正文条件。

字段 说明 要点
号码条件 检查发件号码、短号、服务号或国际前缀 可空
正文条件 检查短信正文是否包含目标模式 可空
分类 命中后的最终处理结果 选“正常”就是允许规则
优先级 多条规则同时命中时的排序依据 默认 100,范围 -100 到 1000
归一化增强匹配 先清洗文本再做通配符匹配 只影响通配符,不改变正则
备注 给自己看的说明 建议写明用途

一条规则至少要有一个条件:

  • 只有号码条件:只看发件人。
  • 只有正文条件:只看短信内容。
  • 号码 + 正文同时存在:两项必须同时命中,关系是 AND。
如果您还不会写规则

请先看 《自定义规则新手手册》。本页默认您已经知道规则测试、允许规则和优先级这些基础概念。

通配符语法总览

当规则使用“通配符”模式时,短信卫士采用统一的表达式解析方式。下面是最值得记住的 5 个语法符号:

写法 含义 例子
* 任意长度的任意内容,可为空 106*验证*码
|、空格、换行 OR,任意一个子句命中即可 贷款|借钱|放款
+ AND,同一子句中的条件都要成立 优惠+券+86*+*3851
!token NOT,该 token 不能命中 优惠+!过期
\ 转义特殊字符 C\+\+

重要提醒:空格也会被当成 OR 分隔符。所以 工商 银行 表示“工商”或“银行”,不是带空格的完整短语。

正则模式例外:一旦切到正则表达式模式,上面这套通配符语法就不再参与,整段文本完全按正则解释。

允许规则与优先级

当多条规则同时命中同一条短信时,系统不会随机选一条,而是按固定顺序决定“最终胜出规则”:

  1. 允许规则优先:分类为“正常”的规则总是优先。
  2. 优先级更高的规则优先
  3. 带号码条件的规则优先于纯正文规则
  4. 如果还相同,号码侧命中的规则更靠前
  5. 如果仍然相同,按规则列表顺序决定

默认优先级是 100,可调范围是 -100 到 1000。没有冲突时,默认值通常就够用;只有多条规则抢同一类短信时,才需要刻意拉开数值。

提示:五位及以下号码放行

如果您开启了中国大陆环境下的“五位及以下号码放行”,像 10086、12306、955xx 这类短号会优先放行。规则测试里也会把这类情况标记为“被五位号码规则跳过”。

发件人号码条件

号码条件最适合处理固定号段、短号、国际区号或已知服务号。通配符模式下,它更像“号码片段匹配器”,而不是普通全文搜索。

号码条件适合的场景

  • 精确短号:如 1008695533
  • 固定号段:如 1069*+852*
  • 尾号特征:如 *3851
  • 排除某一小段:如 +86*+!+86106*

号码通配符的实际行为

  • 号码通配符模式优先处理 +、数字和 *
  • 子句开头的 + 默认当作国际区号前缀,例如 +86*
  • 想表达“同时满足”,用 +,例如 +86*+*3851
  • 想表达“不能出现”,用 !token,例如 +86*+!+86106*
  • 如果号码结构已经非常复杂,建议直接切到正则模式。
目的 写法 说明
拦所有 1069 号段 1069* 前缀匹配
抓中国区号且尾号 3851 +86*+*3851 AND 组合
抓 +86 号码但排除 +86106 +86*+!+86106* 排除子句
抓多个境外前缀 +852*|+886*|00* OR 组合

正文条件

正文条件最常用,因为垃圾短信的话术变化远大于号码来源。它既可以写成简单关键词,也可以写成多词组合、排除条件或正则表达式。

正文通配符的实际规则

  • 基础关键词退订回T,正文包含这段连续文字即可。
  • 通配符加微信*领红包,中间允许插入任意内容。
  • AND澳门+博彩,两个词都要出现。
  • OR贷款|借钱|放款,任意一个出现都算命中。
  • NOT优惠+!过期,有“优惠”但不能有“过期”。
  • 转义C\+\+ 匹配字面量 C++。
  • 组合条件验证*码+123456,既要像验证码,又要包含目标数字。

归一化与规则测试

归一化增强匹配适合处理插入符号、全角半角、部分繁简差异等问题。它只影响通配符逻辑,不会改变正则表达式本身。

场景 更适合的规则写法 说明
【驗-證-碼】123456 验证*码+123456 适合处理验证码被插入干扰字符
+86 186-0285-3851 +86186* 适合号码里混入空格和符号
加 V X 领红包 加*v*x*领红包 适合话术被故意拆开

规则测试页能告诉您什么

  • 最终是哪条规则被选中。
  • 哪些规则命中了但没胜出。
  • 号码条件和正文条件分别有没有命中。
  • 是否因为五位号码放行而被整体跳过。

导入导出与兼容

当前导出的规则文件使用统一规则格式,并保留规则的唯一 ID、修改时间、优先级、启用状态、备注和归一化匹配设置。导入时仍兼容旧版 senderRules / keywordRules 结构。

  • 合并导入:遇到同一条规则时,通常保留修改时间更新的版本。
  • 覆盖导入:当前本地规则会被导入文件整体替换。
  • 结果统计:导入结果会按“号码规则 / 正文规则 / 组合规则”分组统计。

高级:正则表达式进阶

只有当通配符写法不够表达您的需求时,才建议切到正则。正则越复杂,后续越难维护。

常用语法速查

符号 含义 示例
^$ 分别匹配开头和结尾 ^106 表示必须以106开头
. (点) 匹配任意一个字符 代.开发票 匹配 "代开开发票", "代.开发票" 等
* 前面的字符可以出现0次或多次 A.*B 匹配 A 开头 B 结尾的整段话
\d 匹配一个数字 (0-9) \d{4,6} 匹配4到6位连续数字
| 代表"或" (OR) (发票|贷款|博彩) 命中其中任意一个词
什么时候必须用正则

当您需要处理位数范围、字符组、可选片段、复杂顺序或大量变体时再用正则;如果只是“这个词或那个词”“中间可能夹一些字符”,通配符通常更好维护。

实用规则示例

【黑名单】拦 1069 营销号段里的退订短信

号码条件:1069*

正文条件:退订+回T

分类:推广

说明:只有 1069 类发送源并且带典型营销退订话术时才命中,误伤率低于纯号码规则。

【允许规则】保护验证码

正文条件:验证码|动态码|校验码

分类:交易 或 正常

说明:用于压过同级别的拦截规则,避免验证码被营销类关键词误伤。

【黑名单】拦境外高风险前缀

号码条件:+852*|+886*|00*

分类:垃圾

【黑名单】排除“已过期”优惠

正文条件:优惠+!过期

分类:推广

【正则】识别引流账号

正文条件:(薇|v|V)(信|x|X).{0,3}(\d{6,11}|[a-zA-Z0-9_]{6,15})

分类:垃圾

【归一化】处理验证码干扰字符

正文条件:验证*码+123456

归一化增强匹配:开启

说明:适合处理类似 【驗-證-碼】123456 的文本。