我需要一个使用此规则进行JCB卡验证的注册表,(Reference for JCB format)
前四位必须是3088,3096,3112,3158,3337或第一位 八位数必须在35280000到35899999范围内。有效 长度:16位数。
发现许多帖子都在使用正则表达式^(?:2131|1800|35\d{3})\d{11}$
引用post1,post2和post3。
我正在使用Authorize.Net构建信用卡支付模块。但是,针对上述Regex(^(?:2131 ...),Authorize.Net测试JCB信用卡验证失败。
但有JCB卡,如3088000000000017 (Authorize.Net test card),3096022966045455,3088810779293696。
帮助我使用正则表达式。我找不到2131或1800的任何JCB卡,我错过了什么。
答案 0 :(得分:2)
根据规则我会使用这个正则表达式:
^(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位长数字,那么您可能不需要匹配那些较短的数字。