首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信用卡号码检测算法减少假阳性/阴性

信用卡号码检测算法减少假阳性/阴性
EN

Stack Overflow用户
提问于 2013-09-17 05:42:38
回答 1查看 1.8K关注 0票数 0

我想要创建一个算法,可以检测信用卡号码(CCNs)从各种类型的文件。

如何找到CCNs的简单场景是使用所定义的正则表达式:

  1. 签证:^4[0-9]{12}(?:[0-9]{3})?$所有的签证卡号码以4开头。新卡有16位数。旧卡有13张。
  2. MasterCard:^5[1-5][0-9]{14}$ ^5[1-5][0-9]{14}$ MasterCard数字从数字5155开始。都有16位数。
  3. 美国运通:^3[47][0-9]{13}$美国运通卡号码以3437开头,有15位数字。
  4. 食客俱乐部:^3(?:0[0-5]|[68][0-9])[0-9]{11}$食客俱乐部卡号从300开始,通过3053638。都有14位数。有食客俱乐部卡,以5开头,有16位数。这是食客俱乐部和MasterCard的合资公司,应该像MasterCard一样处理。
  5. 发现:^6(?:011|5[0-9]{2})[0-9]{12}$发现卡号以601165开头。都有16位数。
  6. ^(?:2131|1800|35\d{3})\d{11}$21311800开头的JCB卡有15位数。以35开头的JCB卡有16位数。

然后,我们可以用Luhn Mod-10算法检查找到的数字,如果它满足了条件,我们就可以说我们找到了CCN。

但根据我的经验,这个简单的方法有大量的假阳性/阴性。

哪些算法或启发式可以用来减少假阳性/阴性匹配?先进的软件,如PCI数据查找或Card提供了更可靠的结果,这种结果肯定不是通过简单的正则表达式查找和Luhn检查来实现的。

EN

回答 1

Stack Overflow用户

发布于 2014-02-02 00:02:36

您可以使用像BINDB.com这样的源来购买BIN (银行识别号),从而通过只考虑前六位(或在某些情况下是八位数)与现有发卡银行匹配的卡来减少误报。

如果你只是在寻找美国发行的卡,你可以用同样的方法大幅减少这个数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18842081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档