n8n Filter节点正则表达式使用:别再问怎么写,直接抄这几个案例

2026-02-23 9 0

还在为 Filter 节点抓狂?这可能是你最硬核的一次正则表达式学习

在 N8N 大学的后台私信里,笔者发现一个高频问题:“Filter 节点到底怎么写正则?能不能给个现成的?”

说实话,我特别理解这种心情。正则表达式(Regex)这东西,看着像乱码,写起来像造原子弹。很多人在 n8n 里搭建自动化流程时,前面的 Webhook、HTTP Request 都跑得很顺,偏偏在 Filter 节点这里卡住了——想要筛选出“包含特定关键词的邮件”却漏掉了大小写,或者想提取手机号却匹配到了错误的数字。

今天,N8N 大学干脆不讲枯燥的理论了。我们直接把市面上最高频、最实用的 4 个正则表达式案例甩出来。别问为什么,直接抄作业,用到哪学到哪。

案例一:模糊匹配“包含关键词”的邮件

这是最常见的场景。比如你有一个客户反馈的 Webhook,只想处理那些内容里包含“退款”或“投诉”的工单。

在 Filter 节点中,你可以使用简单的 `.*关键词.*` 模式。这种写法的意思是:关键词前面可以有任意字符,后面也可以有任意字符。

实战抄写:

  • 字段(Field):{{ $json.content }} (假设你的数据里有 content 字段)
  • 正则表达式(Regex):.*(退款|投诉).*

避坑提示: 这里的 | 符号代表“或”的意思。如果你的关键词是中文,一定要确保你的数据源编码是 UTF-8,否则 n8n 可能会因为字符集问题匹配失败。

案例二:严格校验中国大陆手机号

如果你在通过表单收集用户信息,肯定不想收到来自火星的电话号码。Filter 节点可以帮你做第一道防线。

中国大陆手机号目前主要是 13、15、17、18、19 开头的 11 位数字。我们需要一个严格的正则来确保它既不是 12345678901 这种假数据,也不是 8 位固话。

实战抄写:

  • 字段(Field):{{ $json.phone }}
  • 正则表达式(Regex):^1[3-9]d{9}$

代码解析:

^ 表示开始
1 表示必须以 1 开头
[3-9] 表示第二位必须是 3 到 9 之间的数字
d{9} 表示后面跟着 9 个任意数字
$ 表示结束(防止后面有多余的字符)

案例三:提取特定格式的日期或订单号

有时候我们需要的不是“通过/不通过”,而是“提取数据”。比如从一段杂乱的日志中提取出 2023-10-27 这种格式的日期。

虽然 n8n 有专门的正则提取工具,但在 Filter 节点里,我们通常先用正则来验证数据的完整性。

实战抄写:

  • 字段(Field):{{ $json.log_message }}
  • 正则表达式(Regex):d{4}-d{2}-d{2}

场景延伸: 如果你想匹配类似 “ORD-20231027-12345” 这样的订单号,可以写成:ORD-d{8}-d{5}。这里的 d 代表数字,{n} 代表重复次数。

案例四:处理“脏数据”——忽略大小写与空格

这是新手最容易栽跟头的地方。用户输入的 "Apple" 和 "apple" 在系统眼里是两码事。如果你不想因为大小写问题漏掉重要数据,必须学会忽略大小写模式。

在 n8n 的 Filter 节点中,正则表达式默认是区分大小写的。我们需要通过修饰符(Flags)来改变这个行为。

实战抄写:

  • 字段(Field):{{ $json.product }}
  • 正则表达式(Regex):apple|iphone|ipad
  • 关键设置: 在 Filter 节点的设置中,找到 Regex 选项,通常旁边会有一个输入框让你填 Flags。请填写 i

硬核解释: 字母 i 在正则世界里代表 ignore case(忽略大小写)。加上它,"APPLE"、"Apple"、"aPpLe" 都会被视为匹配。这能极大提升你的自动化流程的鲁棒性。

Filter 节点的高级玩法:多条件组合

现实世界的业务逻辑很少是单一的。我们经常需要“包含 A 关键词,且手机号正确,但排除 B 域名”。

N8N 的 Filter 节点允许你组合多个规则。你可以添加多个条件行,选择“AND”或“OR”逻辑。

组合示例:

  1. 条件一:Regex 匹配 ^1[3-9]d{9}$ (AND)
  2. 条件二:Regex 不匹配 @test.com$ (排除测试邮箱)

这种组合方式比写一个超长的、难以维护的正则表达式要清晰得多,也更方便后续排查错误。

FAQ:N8N 用户最常见的 3 个问题

1. 为什么我的正则在 n8n 里测试通过了,运行却没效果?

大概率是数据路径(Path)写错了。请检查你的字段路径是否以 $json. 开头,且和上游节点输出的数据结构完全一致。另外,如果上游数据是空的,正则也会匹配失败。

2. n8n 的 Filter 节点支持 Lookbehind (后行断言) 吗?

这取决于你使用的 n8n 版本和 Node.js 环境。n8n 底层运行在 Node.js 上,较新版本的 Node.js 支持 ECMAScript 2018 标准的后行断言(如 (?<=A)B)。但为了兼容性,N8N 大学建议尽量使用标准的、跨版本兼容的正则写法,避免使用过于冷门的语法。

3. 如何快速调试复杂的正则表达式?

不要在 n8n 里盲调。推荐使用在线工具如 Regex101.comRegExr.com。把你的测试字符串贴进去,它可以高亮显示匹配结果,甚至告诉你哪里写错了,比在 n8n 里反复试错效率高出 10 倍。

总结与资源

正则表达式是自动化开发的“内功心法”。虽然 n8n 提供了 UI 界面操作 Filter 节点,但掌握几个核心的正则案例,能让你的流程从“能跑”升级到“好用且稳健”。

笔者建议大家不要死记硬背,而是把上面的案例存进你的笔记里。下次遇到类似需求,直接复制粘贴,根据你的字段微调即可。

更多资源:

  • N8N 大学官网:n8ndx.com (持续更新硬核教程)
  • 正则表达式可视化工具:regexr.com
  • n8N 官方文档:Filter Node 参数详解

相关文章

n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决
当n8n流程意外中断,Error Handling节点如何配置才能优雅降级?
n8n Error Handling节点和Try/Catch节点,到底该怎么选?

发布评论