所有银行卡号码的正则表达式

时间:2015-01-06 10:29:58

标签: regex banking

我使用正则表达式来匹配所有英国银行卡号码格式;我已经完成了研究,并设法找到/修改涵盖大多数格式的正则表达式。但是,我有一个边缘情况,其中一个不匹配,我不知道为什么,或如何解决。这就是我正在使用的:

(\b[4|5|6](\d){3}[\s|-]?((\d){4}[\s|-]?){2}(\d){4}\b)|(\b(\d){4}[\s|-]?(\d){6}[\s|-]?(\d){5}\b)

这是一个不起作用的示例卡号:6759000000005

这是一个有效的示例卡号:675900000000555

道歉,如果这是一个简单的问题,我对正则表达式语法相当新。任何帮助解决将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

请参阅here the demo

正则表达式为(\b[4|5|6]\d{3}[\s-]?(\d{4}[\s-]?){2}\d{1,4}\b)|(\b\d{4}[\s-]?\d{6}[\s-]?\d{5}\b)

我不是英国卡的专家,所以我不能告诉你预期的格式是什么,因为你没有给出带有空格或连字符的例子...... 如果你可以改进它可以处理的要求。

更通用的卡号验证(没有分隔符,因此您之前需要删除它们)将是

\d{6}\d{1,12}\d

根据规范的要求(在帐户标识符的最小长度上找不到任何内容):

  

ISO / IEC 7812卡号最常见的是16位数,[1]   最多可达19位。结构如下:

     

六位数的发卡行识别号码(IIN)(以前称为   "银行识别号码" (BIN))其中的第一个数字是   主要行业标识符(MII),可变长度(最多12位)   个人帐户标识符,使用计算的单个校验位   Luhn算法。[2]