JCB信用卡验证的Reg-Ex

时间:2016-02-22 23:31:55

标签: c# regex

我需要一个使用此规则进行JCB卡验证的注册表,(Reference for JCB format

  

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

发现许多帖子都在使用正则表达式^(?:2131|1800|35\d{3})\d{11}$引用post1post2post3

我正在使用Authorize.Net构建信用卡支付模块。但是,针对上述Regex(^(?:2131 ...),Authorize.Net测试JCB信用卡验证失败。

但有JCB卡,如3088000000000017 (Authorize.Net test card),3096022966045455,3088810779293696

帮助我使用正则表达式。我找不到2131或1800的任何JCB卡,我错过了什么。

1 个答案:

答案 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位长数字,那么您可能不需要匹配那些较短的数字。