我正在尝试使用 jQuery 验证信用卡号码,但我不想使用验证插件,有没有其他插件可以做到这一点?
3 回答
http://en.wikipedia.org/wiki/Luhn_algorithm
您可以在下面将其最小化为代码中非常小的占用空间。
function isCreditCard( CC )
{
if (CC.length > 19)
return (false);
sum = 0; mul = 1; l = CC.length;
for (i = 0; i < l; i++)
{
digit = CC.substring(l-i-1,l-i);
tproduct = parseInt(digit ,10)*mul;
if (tproduct >= 10)
sum += (tproduct % 10) + 1;
else
sum += tproduct;
if (mul == 1)
mul++;
else
mul--;
}
if ((sum % 10) == 0)
return (true);
else
return (false);
}
如果你想确定它是一个有效的卡号,你需要检查的不仅仅是 Luhn 数字。
Luhn 数字仅用于检查换位错误,很容易被数字欺骗,例如 22222222222222222
应检查卡号的前六位数字。这些数字称为发行人标识号,可用于确保该号码在可识别范围内。不幸的是,您将很难找到 IIN 的完整列表,尤其是因为发行人不断添加和删除范围。维基百科有一个非常基本的概述:银行卡号
如果您可以从 IIN 确定卡类型,那么您也可以尝试验证号码的长度。
除非您有充分的理由,否则使用验证插件之类的东西要容易得多。
我建议您使用正则表达式...您可以查看我的存储库我有一个代码片段来验证 Visa、万事达卡、Discovery、美国运通和安全代码
https://github.com/leojavier/RegexCollection
记住......仅仅因为你限制了数字的数量并不意味着它是正确的。
例如:
- 所有 Visa 卡号都以 4 开头。新卡有 16 位数字。
- 所有万事达卡号码都以数字 51 到 55 开头。所有号码都有 16 位数字。等等...
index.html 是一个示例,向您展示如何使用它!如果您有任何问题,请随时给我写信:)