支持 19 位 Visa 和 Discover 卡验证的正则表达式模式
Regex pattern to support the 19 digit Visa and Discover card validation
目前我正在使用以下正则表达式,但它们不支持 19 位数字卡的 visa 和 discover。请帮忙。
visaCardPattern: /^4[0-9]{12}(?:[0-9]{3})?$/
discoverCardPattern: /^6(?:011|5[0-9]{2})[0-9]{12}$/
对于 VISA - 您所要做的就是简单地使可选的 [0-9]
组匹配一次或两次。
^4[0-9]{12}(?:[0-9]{3}){0,2}$
基本上这与您已有的正则表达式相同,除了可选的 [0-9]{3}
组现在有 3 种可能的结果-
- 完全不匹配 - 13 位 VISA
- 匹配一次 - 16 位 VISA
- 匹配两次 - 19 位 VISA
查看演示 here
对于发现卡 - 它更简单,您只需添加一个上限到 [0-9]{12}
。
由于发现卡片的长度可以在 16 到 19 之间(含),您只需将正则表达式更改为-
^6(?:011|5[0-9]{2})[0-9]{12,15}$
除了最后的 0-9
组现在有以下结果外,这与您自己的正则表达式相同 -
- 它匹配了 12 次 - 总长度为 16
- 它匹配了 13 次 - 总长度为 17
- 它匹配了 14 次 - 总长度为 18
- 匹配 15 次 - 总长度为 19
查看演示 here
注意:这是假设发现卡的长度可以在 16 到 19 之间,而不是 16 或 19。一些消息来源说它可以是介于两者之间的任何长度, 而有人说它只能有 16 或 19.
我不是信用卡专家,但为了完成,我将包含一个正则表达式来匹配发现卡的 16 或 19-
^6(?:011|5[0-9]{2})(?:[0-9]{3}){4,5}$
这个以 4 人为一组与最后 [0-9]
匹配,结果如下 -
- 它匹配了 4 次 - 总共 16 个数字
- 它匹配了 5 次 - 总共 19 个数字
查看演示 here
编辑:对于万事达卡,你可以试试这个-
^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)(?:[0-9]{3}){4,5}$
与发现卡的方法完全相同,只需将最后的[0-9]
以3个为一组进行匹配,并使其匹配4或5次。 (也就是 4 次总共 16 位和 5 次总共 19 位)
查看演示 here
目前我正在使用以下正则表达式,但它们不支持 19 位数字卡的 visa 和 discover。请帮忙。
visaCardPattern: /^4[0-9]{12}(?:[0-9]{3})?$/
discoverCardPattern: /^6(?:011|5[0-9]{2})[0-9]{12}$/
对于 VISA - 您所要做的就是简单地使可选的 [0-9]
组匹配一次或两次。
^4[0-9]{12}(?:[0-9]{3}){0,2}$
基本上这与您已有的正则表达式相同,除了可选的 [0-9]{3}
组现在有 3 种可能的结果-
- 完全不匹配 - 13 位 VISA
- 匹配一次 - 16 位 VISA
- 匹配两次 - 19 位 VISA
查看演示 here
对于发现卡 - 它更简单,您只需添加一个上限到 [0-9]{12}
。
由于发现卡片的长度可以在 16 到 19 之间(含),您只需将正则表达式更改为-
^6(?:011|5[0-9]{2})[0-9]{12,15}$
除了最后的 0-9
组现在有以下结果外,这与您自己的正则表达式相同 -
- 它匹配了 12 次 - 总长度为 16
- 它匹配了 13 次 - 总长度为 17
- 它匹配了 14 次 - 总长度为 18
- 匹配 15 次 - 总长度为 19
查看演示 here
注意:这是假设发现卡的长度可以在 16 到 19 之间,而不是 16 或 19。一些消息来源说它可以是介于两者之间的任何长度, 而有人说它只能有 16 或 19.
我不是信用卡专家,但为了完成,我将包含一个正则表达式来匹配发现卡的 16 或 19-
^6(?:011|5[0-9]{2})(?:[0-9]{3}){4,5}$
这个以 4 人为一组与最后 [0-9]
匹配,结果如下 -
- 它匹配了 4 次 - 总共 16 个数字
- 它匹配了 5 次 - 总共 19 个数字
查看演示 here
编辑:对于万事达卡,你可以试试这个-
^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)(?:[0-9]{3}){4,5}$
与发现卡的方法完全相同,只需将最后的[0-9]
以3个为一组进行匹配,并使其匹配4或5次。 (也就是 4 次总共 16 位和 5 次总共 19 位)
查看演示 here