用于 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 卡,我错过了什么。
鉴于规则,我将使用此正则表达式:
^(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 位长数字,那么您可能不需要匹配这些较短的数字。