You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Logstash掩码16位信用卡号的第6-10位数字?

解决Logstash中信用卡号指定段掩码的问题

嘿,我来帮你搞定这个信用卡号掩码的难题!你之前用的gsub把整个16位卡号都变成#了,那是因为没用到正则的捕获组来精准保留需要显示的部分,其实不用拆分拼接,一个优化后的gsub就能轻松搞定。

针对你给出的示例(把1234567898763456变成123456######3456),可以用这个配置:

filter {
  mutate {
    gsub => [
      "message",
      "(\d{6})(\d{6})(\d{4})",
      "\1######\3"
    ]
  }
}

配置说明:

  • 正则(\d{6})(\d{6})(\d{4})把16位卡号拆成了三个捕获组:
    1. (\d{6}):匹配并保留前6位数字(对应示例里的123456)
    2. (\d{6}):匹配需要掩码的中间6位数字(示例里的789876)
    3. (\d{4}):匹配并保留最后4位数字(示例里的3456)
  • 替换字符串\1######\3里,\1代表第一个捕获组的内容,\3代表第三个捕获组的内容,中间用6个#替换掉第二个捕获组的内容,完美实现你要的掩码效果。

如果你的实际需求确实是掩码第6到10位(共5位),只需要稍微调整正则和替换串:

filter {
  mutate {
    gsub => [
      "message",
      "(\d{5})(\d{5})(\d{6})",
      "\1#####\3"
    ]
  }
}

这个配置会保留前5位,掩码中间5位,最后6位原样保留,灵活得很!

内容的提问来源于stack exchange,提问作者Saurav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:16:18