Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JCB信用卡验证的Reg Ex_C#_Regex - Fatal编程技术网

C# JCB信用卡验证的Reg Ex

C# 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

我需要一个用于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…)中失败

但也有类似于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[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位数字,那么您可能不需要匹配那些较短的卡号。

根据规则,我将使用此正则表达式:

^(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位数字,那么您可能不需要匹配那些较短的卡号。

我强烈建议不要使用正则表达式进行此类验证。您应该将输入解析为一个数字并进行处理。匹配数字范围的正则表达式非常不透明且不直观;简言之,这是一个维护噩梦。@Vikhram:我强烈反对。当对数字字符串(或任何字符)的格式有严格的规则时这些规则不一定会经常改变,正则表达式在识别有效字符串方面非常有帮助。当然,如果信用卡号和其他带有错误检测的数字字符串,也应该验证校验位以确保该数字实际上是有效的,但如果只检查其他数字,则可以节省时间rwise的有效格式。我强烈建议不要使用正则表达式进行此类验证。您应该将输入解析为数字并进行处理。匹配数字范围的正则表达式非常不透明且不直观;简言之,这是一个维护噩梦。@Vikhram:我强烈反对。当对数字字符串的格式有严格的规则时(或任何字符)这些规则不一定会经常改变,正则表达式在识别有效字符串方面非常有帮助。当然,如果信用卡号和其他带有错误检测的数字字符串,也应该验证校验位以确保该数字实际上是有效的,但如果只检查其他数字,则可以节省时间有效格式的rwise。