用于 JCB 信用卡验证的正则表达式

本文关键字:正则表达式 验证 信用卡 JCB 用于 | 更新日期: 2023-09-27 18:35:49

我需要使用此规则进行JCB卡验证的正则表达式,(JCB格式的参考)

前四位数字必须是 3088、3096、3112、3158、3337 或第一个 八位数字必须在 35280000 到 35899999 范围内。有效 长度:16 位数字。

许多帖子都带有正则表达式^(?:2131|1800|35'd{3})'d{11}$指的是 post1、post2 和 post3。

我正在使用 Authorize.Net 构建一个信用卡支付模块,但是 Authorize.Net 测试 JCB 信用卡验证在上述正则表达式 (^(?:2131...) 下失败。

但是有JCB卡,如3088000000000017(Authorize.Net 测试卡),3096022966045455,3088810779293696。

帮我处理正则表达式。我找不到任何带有 2131 或 1800 的 JCB 卡,我错过了什么。

用于 JCB 信用卡验证的正则表达式

鉴于规则,我将使用此正则表达式:

^(3(?:088|096|112|158|337|5(?:2[89]|[3-8][0-9]))'d{12})$

故障:

  • ^(3...)$:锚定开始和结束,并捕获以数字 3 开头的内容

  • (?:...):不要显式捕获内容(在外括号内捕获)

  • 088|...|337|...:匹配任何三位数字的值

  • 5(?:...):第一场比赛5,然后

  • 2[89]|[3-8][0-9] :匹配 2 后跟 8 或 9,或匹配 3 到 8 后跟任意数字(从 0 到 9)的任何数字

  • 'd{12} :后跟正好 12 个任意数字(''d 与 [0-9] 相同)

编辑:关于您关于以2131和1800开头的数字的问题,在您的第三个参考页面中,这些JCB卡号的长度为15位,而以35开头的卡号为16位。如果您的规格仅涉及 16 位长数字,那么您可能不需要匹配这些较短的数字。