news 2026/11/2 1:44:06

如何只用一行正则过滤短信内容?android_income_sms_gateway_webhook文本过滤器教程(含反向排除实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何只用一行正则过滤短信内容?android_income_sms_gateway_webhook文本过滤器教程(含反向排除实战)
  • 移动开发

【免费下载链接】android_income_sms_gateway_webhook

Simple Android incoming SMS to URL forwarder

项目地址:https://gitcode.com/gh_mirrors/an/android_income_sms_gateway_webhook
点击查看免费下载

📱 android_income_sms_gateway_webhook(Incoming SMS to URL forwarder)是一款免费的开源 Android 应用,能把手机收到的短信以 JSON 格式通过 HTTP POST 自动转发到你指定的 URL。而它内置的Text filter(文本过滤器)可以用一行正则表达式,决定哪些短信值得转发、哪些直接丢弃——本文带你从零配置,到"反向排除"的实战玩法。

为什么需要"短信文本过滤器"?

默认情况下,转发规则只按发件人(Sender)匹配:一旦命中,这个号码的所有短信都会被转发。但现实中你往往只关心其中一部分——比如只要银行验证码,不想要验证码营销轰炸。

Text filter 就是为此设计的:它是每条转发规则里的一个可选字段,填入一条 Java 正则表达式后,只有短信正文匹配该正则时消息才会被转发。

  • 字段名称:Text filter (regex, optional),文案定义见 strings.xml
  • 表单控件位于规则编辑弹窗的 "ROUTING PARAMETERS" 区域:dialog_config_edit_form.xml
  • 留空 = 转发全部消息(保持历史行为,不影响老用户)

快速上手:只转发包含关键词的短信

配置步骤只有三步:

  1. 打开 App,点右下角"+"新建转发规则
  2. Sender填*(星号表示匹配任意发件人,纯按内容过滤)
  3. 在Text filter (regex, optional)中填入正则,再填 Webhook URL,保存

匹配采用子串匹配(Java 的find()):关键词出现在正文任意位置即可命中,无需锚定开头。

填入的正则转发效果
OTP正文包含 "OTP" 的短信
OTP\|verification code包含 "OTP" 或 "verification code" 任一短语
(?i)verification忽略大小写匹配 "verification"
您的验证码匹配中文短信(如银行验证码)

💡 提示:匹配是区分大小写的,需要忽略大小写时在正则开头加(?i)前缀。

反向排除实战:转发"不包含某词"的所有短信

更实用的场景是反过来:我想转发所有短信,但排除广告。一条负向先行断言(negative lookahead)即可搞定:

(?s)^(?!.*OTP)

逐段拆解这"一行"的构成:

  • ^—— 定位到消息开头
  • (?s)—— 让.能匹配换行符,多行短信中任何一行出现关键词都能被抓住
  • (?!.*OTP)—— 负向先行断言:断言其后不存在"OTP" 字样

也就是说:凡是不含"OTP" 的短信都会被转发,含 "OTP" 的被过滤。

想同时排除多个关键词并忽略大小写?组合一下:

(?si)^(?!.*(spam|promo))

它会转发所有不含"spam" 或 "promo"(不分大小写)的消息。这个"反向排除"行为在项目的仪器化测试中有专门覆盖:SmsReceiverTest.java(testSmsBlockedWhenExcludeFilterMatches与testSmsPassedWhenExcludeFilterDoesNotMatch)。

容错设计:为什么你的正则写错了也不会丢短信?

这是该项目一个非常贴心的细节(源码见 SmsBroadcastReceiver.java 的matchesFilter方法):

情况行为
过滤器留空✅ 转发全部(历史默认行为)
正则合法且匹配✅ 转发该条短信
正则合法但不匹配⛔ 不转发
正则语法非法✅仍然转发,并记录错误日志(fail open)

换句话说,手滑打错正则永远不会静默吞掉你的验证码——消息照常转发,错误会写进日志。你可以在规则弹窗里点TEST按钮发一条测试请求验证链路,再点主界面的Syslog按钮查看 Logcat 中记录的正则编译错误(该字段持久化在 ForwardingConfig.java 的smsFilter字段)。

⚠️ 对比记忆:发件人正则(Sender is a regular expression)写错时是"失败关闭"(一条都不转发),而文本过滤器写错是"失败放行"。前者防泄漏,后者防丢码。

进阶组合:过滤 + 提取 + 直达 Telegram

文本过滤器解决"要不要发",配套的%Regex=...%占位符解决"发什么"——两者配合可以只转发且只提取关键数据:

  • 模板里写"code": "%Regex=(\\d+)%",即可从Your code is 123456中抽出123456
  • 将 Webhook URL 指向 Telegram Bot API(https://api.telegram.org/bot<YourBOTToken>/sendMessage?chat_id=<channel_id>),配合过滤规则,就得到一个"只把重要短信推送到手机"的极简网关,全程无需云服务和注册

完整字段说明(%from%、%text%、%sentStamp%等占位符)可参考 README.md 的 "Request info" 与 "Filter by message text" 章节。

常见问题(FAQ)

Q:配了过滤器后短信没转发,怎么排查?先用 TEST 按钮确认 Webhook 可达;再用 Syslog 查看是否有 "Invalid filter regex" 日志。另外注意:该 App 只转发SMS,走 RCS 通道的消息不会触发,可在 Google Messages 中关闭 RCS 测试(详见 README.md 的 "RCS messages are not forwarded")。

Q:过滤器和发件人条件是"与"还是"或"?"与"——两者都满足才转发。想纯按内容过滤,把 Sender 设为*即可。

小结

需求一行正则
只含 "OTP" 的短信OTP
多关键词任一命中OTP\|verification code
排除含 "OTP" 的短信(?s)^(?!.*OTP)
排除多个词且忽略大小写(?si)^(?!.*(spam\|promo))

掌握这一个Text filter字段,你已能覆盖绝大多数"短信该不该转发"的判断场景。核心逻辑源码路径:app/src/main/java/tech/bogomolov/incomingsmsgateway/SmsBroadcastReceiver.java,测试用例:app/src/androidTest/java/tech/bogomolov/incomingsmsgateway/SmsReceiverTest.java。

  • 移动开发

【免费下载链接】android_income_sms_gateway_webhook

Simple Android incoming SMS to URL forwarder

项目地址:https://gitcode.com/gh_mirrors/an/android_income_sms_gateway_webhook
点击查看免费下载
上一篇:Apache Beam Playground 开发运维实战指南:Gradle 任务、本地 Docker 环境、依赖升级与示例部署
下一篇:从 8.6 KB 到 4.2 KB:Spirula Studio 3D高斯泼溅反向光栅化提速 19%

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 1:27:01

夸克网盘破解永久不限速下载-在线免费工具

今天教大家一招能解决夸克网盘限制的在线工具。这个工具也是完全免费使用的。下面让大家看看我用这个工具的下载速度咋样。地址获取&#xff1a;放在这里了&#xff0c;可以直接获取 这个速度还是不错的把。对于平常不怎么下载的用户还是很友好的。下面开始今天的教学 输入我给…

作者头像 李华
网站建设 2026/11/2 1:16:55

Kornia多传感器融合:RGB与LiDAR的几何数据整合

Kornia多传感器融合&#xff1a;RGB与LiDAR的几何数据整合 【免费下载链接】kornia &#x1f40d; Geometric Computer Vision Library for Spatial AI 项目地址: https://gitcode.com/GitHub_Trending/ko/kornia 引言&#xff1a;多模态感知的技术挑战 在自动驾驶与机…

作者头像 李华