C# JCB信用卡验证的Reg Ex
我需要一个用于JCB卡验证的reg ex,使用此规则,() 前四位数字必须是3088、3096、3112、3158、3337或第一位数字 八位数字必须在35280000到35899999之间。有效的 长度:16位 许多帖子都使用RegexC# JCB信用卡验证的Reg Ex,c#,regex,C#,Regex,我需要一个用于JCB卡验证的reg ex,使用此规则,() 前四位数字必须是3088、3096、3112、3158、3337或第一位数字 八位数字必须在35280000到35899999之间。有效的 长度:16位 许多帖子都使用Regex^(?:2131 | 1800 | 35\d{3})\d{11}$引用和 我正在使用Authorize.Net构建信用卡支付模块,但是Authorize.Net测试JCB信用卡验证在上述正则表达式(^(?:2131…)中失败 但也有类似于309629660454
^(?:2131 | 1800 | 35\d{3})\d{11}$
引用和
我正在使用Authorize.Net构建信用卡支付模块,但是Authorize.Net测试JCB信用卡验证在上述正则表达式(^(?:2131…)中失败
但也有类似于30962966045455的JCB卡
请帮助我使用正则表达式。我找不到任何带有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后跟8或9,或匹配3到8之间的任何数字后跟任何数字(从0到9)2[89]|[3-8][0-9]
:后跟正好12个任意数字(\d与[0-9]相同)\d{12}
编辑:关于您关于2131和1800开头的数字的问题,在您的第三个参考页中,它显示这些JCB卡号的长度为15位,而35开头的卡号的长度为16位。如果您的规格仅指16位数字,那么您可能不需要匹配那些较短的卡号。 根据规则,我将使用此正则表达式:
^(3(?:088 | 096 | 112 | 158 | 337 | 5(?:2[89]|[3-8][0-9]))\d{12}$
细分:
:锚定开始和结束并捕获以数字3开头的内容^(3…)$
:不显式捕获内容(捕获在外括号内)(?:…)
:匹配三位数值中的任意一位或088 |…| 337 |…
:首先匹配5,然后5(?:…)
:匹配2后跟8或9,或匹配3到8之间的任何数字后跟任何数字(从0到9)2[89]|[3-8][0-9]
:后跟正好12个任意数字(\d与[0-9]相同)\d{12}
编辑:关于您关于2131和1800开头的数字的问题,在您的第三个参考页中,它显示这些JCB卡号的长度为15位,而35开头的卡号的长度为16位。如果您的规格仅指16位数字,那么您可能不需要匹配那些较短的卡号。我强烈建议不要使用正则表达式进行此类验证。您应该将输入解析为一个数字并进行处理。匹配数字范围的正则表达式非常不透明且不直观;简言之,这是一个维护噩梦。@Vikhram:我强烈反对。当对数字字符串(或任何字符)的格式有严格的规则时这些规则不一定会经常改变,正则表达式在识别有效字符串方面非常有帮助。当然,如果信用卡号和其他带有错误检测的数字字符串,也应该验证校验位以确保该数字实际上是有效的,但如果只检查其他数字,则可以节省时间rwise的有效格式。我强烈建议不要使用正则表达式进行此类验证。您应该将输入解析为数字并进行处理。匹配数字范围的正则表达式非常不透明且不直观;简言之,这是一个维护噩梦。@Vikhram:我强烈反对。当对数字字符串的格式有严格的规则时(或任何字符)这些规则不一定会经常改变,正则表达式在识别有效字符串方面非常有帮助。当然,如果信用卡号和其他带有错误检测的数字字符串,也应该验证校验位以确保该数字实际上是有效的,但如果只检查其他数字,则可以节省时间有效格式的rwise。