Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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
Javascript 信用卡验证脚本说明_Javascript - Fatal编程技术网

Javascript 信用卡验证脚本说明

Javascript 信用卡验证脚本说明,javascript,Javascript,我想知道用于验证主要信用卡的每个字符的解释。我在谷歌上搜索发现了以下解释,但它们并没有完全解释,例如:什么意思?等 VISA=^4[0-9]{12}?:[0-9]{3}$ 所有Visa卡号码都以4开头。新卡有16位数字。旧卡有13张 万事达卡=^5[1-5][0-9]{14}$ 所有万事达卡号都以51到55开头。都有16位数字 美国运通=^3[47][0-9]{13}$ 美国运通卡号以34或37开头,有15位数字 JCB=^?:2131 | 1800 | 35\d{3}\d{11}$ 以2131

我想知道用于验证主要信用卡的每个字符的解释。我在谷歌上搜索发现了以下解释,但它们并没有完全解释,例如:什么意思?等

VISA=^4[0-9]{12}?:[0-9]{3}$

所有Visa卡号码都以4开头。新卡有16位数字。旧卡有13张

万事达卡=^5[1-5][0-9]{14}$

所有万事达卡号都以51到55开头。都有16位数字

美国运通=^3[47][0-9]{13}$

美国运通卡号以34或37开头,有15位数字

JCB=^?:2131 | 1800 | 35\d{3}\d{11}$

以2131或1800开头的JCB卡有15位数字。以35开头的JCB卡有16位数字

食客俱乐部=^3?:0[0-5]|[68][0-9][0-9]{11}$

食客俱乐部卡号以300到305、36或38开头。都有14位数字。有些餐车俱乐部卡以5开头,有16位数字。这是Diners Club和MasterCard之间的合资企业,应该像MasterCard一样进行处理。

?:表示不将捕获作为匹配结果的一部分,即捕获组,基本上忽略这组括号中的内容

例如:

$matches = array();
$card = '4111123456789012';
if (preg_match('/^4[0-9]{12}([0-9]{3})?$/', $card, $matches)) {
    var_dump($matches);
}
echo "\n";
输出:

array(2) {
  [0]=>
  string(16) "4111123456789012"
  [1]=>
  string(3) "012"
}
array(1) {
  [0]=>
  string(16) "4111123456789012"
}
vs

输出:

array(2) {
  [0]=>
  string(16) "4111123456789012"
  [1]=>
  string(3) "012"
}
array(1) {
  [0]=>
  string(16) "4111123456789012"
}
注意,在第二个示例中,$matches[1]不存在?那是因为你说?:…这里的东西。。。不要抓住它

-

在^4[0-9]{12}中:[0-9]{3}$

^表示匹配此模式的字符串开始的开始

4文本字符串4

[0-9]0到9(含)的单个数字

{12} 是上一个角色/组的修改器。在这种情况下,[0-9]{12}表示正好12位数字

?:。。。东西如上所述

??是上一个角色/组的修改器。在这种情况下。。。?括号中的0或1

$表示匹配字符串的结尾

-

在^?:2131 | 1800 | 35{3}\d{11}$

|表示或,因此字符串可以以2131、1800或35开头

\d与[0-9]

?:表示不将捕获作为匹配结果的一部分,即捕获组,基本上忽略这组括号中的内容

例如:

$matches = array();
$card = '4111123456789012';
if (preg_match('/^4[0-9]{12}([0-9]{3})?$/', $card, $matches)) {
    var_dump($matches);
}
echo "\n";
输出:

array(2) {
  [0]=>
  string(16) "4111123456789012"
  [1]=>
  string(3) "012"
}
array(1) {
  [0]=>
  string(16) "4111123456789012"
}
vs

输出:

array(2) {
  [0]=>
  string(16) "4111123456789012"
  [1]=>
  string(3) "012"
}
array(1) {
  [0]=>
  string(16) "4111123456789012"
}
注意,在第二个示例中,$matches[1]不存在?那是因为你说?:…这里的东西。。。不要抓住它

-

在^4[0-9]{12}中:[0-9]{3}$

^表示匹配此模式的字符串开始的开始

4文本字符串4

[0-9]0到9(含)的单个数字

{12} 是上一个角色/组的修改器。在这种情况下,[0-9]{12}表示正好12位数字

?:。。。东西如上所述

??是上一个角色/组的修改器。在这种情况下。。。?括号中的0或1

$表示匹配字符串的结尾

-

在^?:2131 | 1800 | 35{3}\d{11}$

|表示或,因此字符串可以以2131、1800或35开头


\d与[0-9]相同。

您提供的规则实际上并没有完全验证信用卡号,它们只是检查正确的位数

如果你真的想验证信用卡号码,你需要确保最后一个数字的校验位与号码的其余部分相匹配,根据-more信息和Javascript中的工作代码。使用您提供的正则表达式,4000000000000000被视为有效的VISA卡号,但当您同时检查支票数字时,它不是

要解释您提供的正则表达式,请执行以下操作:

^表示字符串的开头,$表示字符串的结尾。除非希望正则表达式与较大字符串的子字符串匹配,否则必须始终使用它们来锚定正则表达式

[0-9]指任何数字0到9或介于两者之间的任何数字。您也可以使用\d来实现此目的,其他示例中的一个就是这样做的\d是一个特殊字符,表示任何数字。还有其他一些特殊字符,如\s,表示任何空白字符

{12} 表示重复上一个字母或括号内的图案12次,不多也不少

?:刚开始一个带括号的模式。与之间的区别在于?:不会捕获模式,以便稍后使用反向引用进行检索。这些示例都没有使用反向引用,因此?:很好,通常效率更高

以括号形式结束。括号模式仅用于将多个字母/模式放入一个组中

??表示上一个字母或括号内的图案是可选的-它可以出现0次或1次。顺便说一句,{0,1}也会做同样的事情

其余的都是不言自明的,除了:


[68]意思是6或8。如果它有一个破折号,比如[6-8],它意味着6到8,也包括7。但事实并非如此,因此它排除了7。

您提供的规则实际上并没有完全验证信用卡 数字,他们只是检查正确的位数

如果你真的想验证信用卡号码,你需要确保最后一个数字的校验位与号码的其余部分相匹配,根据-more信息和Javascript中的工作代码。使用您提供的正则表达式,4000000000000000被视为有效的VISA卡号,但当您同时检查支票数字时,它不是

要解释您提供的正则表达式,请执行以下操作:

^表示字符串的开头,$表示字符串的结尾。除非希望正则表达式与较大字符串的子字符串匹配,否则必须始终使用它们来锚定正则表达式

[0-9]指任何数字0到9或介于两者之间的任何数字。您也可以使用\d来实现此目的,其他示例中的一个就是这样做的\d是一个特殊字符,表示任何数字。还有其他一些特殊字符,如\s,表示任何空白字符

{12} 表示重复上一个字母或括号内的图案12次,不多也不少

?:刚开始一个带括号的模式。与之间的区别在于?:不会捕获模式,以便稍后使用反向引用进行检索。这些示例都没有使用反向引用,因此?:很好,通常效率更高

以括号形式结束。括号模式仅用于将多个字母/模式放入一个组中

??表示上一个字母或括号内的图案是可选的-它可以出现0次或1次。顺便说一句,{0,1}也会做同样的事情

其余的都是不言自明的,除了:


[68]意思是6或8。如果它有一个破折号,比如[6-8],它意味着6到8,也包括7。但事实并非如此,所以它不包括7。

如果你真的很想检查信用卡号的格式,那么这些卡类型中的一些可能都是?如果你真的很想检查信用卡号的格式,那么这些类型的卡中的一些可能都是?数字中还内置了校验位验证。