gpt4 book ai didi

javascript - 信用卡验证脚本说明

转载 作者:行者123 更新时间:2023-11-30 08:12:49 25 4
gpt4 key购买 nike

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

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}$

American Express 卡号以 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}$

Diners Club 卡号以 300 到 305、36 或 38 开头。所有卡号均为 14 位数字。有以 5 开头并有 16 位数字的 Diners Club 卡。这些是 Diners Club 和 MasterCard 的合资企业,应该像 MasterCard 一样处理。

最佳答案

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

如果您确实想要验证信用卡号,则需要确保校验位(最后一位)与根据 Luhn algorithm 的其余号码匹配- 更多信息和 Javascript 中的工作代码是 available here .使用您提供的正则表达式,4000000000000000 被视为有效的 VISA 卡号,但当您也检查校验位时,它不是。

解释您提供的正则表达式:

^ 表示字符串的开头,$ 表示结尾。这些必须始终用于锚定您的正则表达式,除非您希望它匹配较大字符串的子字符串。

[0-9] 表示任何数字(0 到 9 或介于两者之间的任何数字)。您也可以为此使用 \d (您的其他示例之一也是如此)。 \d 是一个特殊字符,表示“任何数字”。还有其他几个这样的特殊字符,例如 \s 表示“任何空白字符”。

{12} 表示重复前一个字母或括号中的模式 12 次(不多也不少)。

(?: 只是括号模式的开始。(?:( 之间的区别是 (?: 不捕获模式以供稍后检索(使用反向引用)。这些示例均未使用反向引用,因此 (?: 很好(通常效率更高)。

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

? 表示前一个字母或括号中的模式是可选 - 它可以出现 0 次或 1 次。顺便说一下,{0,1} 会做同样的事情。

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

[68] 表示 要么 6 要么 8。如果里面有破折号,比如 [6-8 ],这意味着 6 8,这也包括 7。但它没有,所以它排除了 7。

关于javascript - 信用卡验证脚本说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com