使用 Jquery 进行信用卡验证

Posted

技术标签:

【中文标题】使用 Jquery 进行信用卡验证【英文标题】:Credit Card validation with Jquery 【发布时间】:2010-12-13 23:41:39 【问题描述】:

我正在尝试使用 jQuery 验证信用卡号码,但我不想使用验证插件,有没有其他插件可以做到这一点?

【问题讨论】:

验证插件有什么问题? 是吗? Google 并没有真正返回任何明显的东西而不是验证插件,这一事实已经足够暗示了 【参考方案1】:

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);
 

【讨论】:

+1 - Luhn 将是在客户端“验证”它的唯一方法。 Luhn 检查实际上只对发现转置错误有用。您还需要检查发卡机构识别范围(卡号的前六位数字)是否有效。【参考方案2】:

如果你想确定它是一个有效的卡号,你需要检查的不仅仅是 Luhn 数字。

Luhn 数字仅用于检查换位错误,很容易被数字欺骗,例如 22222222222222222

应检查卡号的前六位数字。这些数字称为发行人标识号,可用于确保该号码在可识别范围内。不幸的是,您将很难找到 IIN 的完整列表,尤其是因为发行人不断添加和删除范围。***有一个非常基本的概述:Bank card number

如果您可以从 IIN 确定卡类型,那么您也可以尝试验证号码的长度。

除非你有充分的理由,否则使用验证插件之类的东西要容易得多。

【讨论】:

【参考方案3】:

我推荐你使用正则表达式... 您可以查看我的存储库,我有一个代码 sn-p 来验证 Visa、万事达卡、Discovery、美国运通和安全代码

https://github.com/leojavier/RegexCollection


记住...仅仅因为你限制了数字的数量并不意味着它是正确的。

例如: - 所有 Visa 卡号均以 4 开头。新卡有 16 位数字。 - 所有万事达卡号码都以数字 51 到 55 开头。所有号码都有 16 位数字。 等等……

index.html 是一个示例,向您展示如何使用它!如果您有任何问题,请随时给我写信:)

【讨论】:

以上是关于使用 Jquery 进行信用卡验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 信用卡验证器

使用 JQUERY 进行 16 位验证

42是有效的信用卡号码吗? jQuery 验证器认为它是

为啥 C# 正则表达式信用卡验证函数会使用无效值进行验证? [复制]

使用信用卡和支付网关进行年龄验证

使用Codeigniter进行信用卡验证