0

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

(\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

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

4

1 回答 1

1

这里演示

正则表达式是(\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]

于 2015-01-06T11:23:43.167 回答