5

jQueryでクレジットカード番号を検証しようとしていますが、検証プラグインを使用したくありません。これを行うための他のプラグインはありますか?

4

3 に答える 3

11

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);
 }
于 2009-11-06T20:14:14.280 に答える
2

有効なカード番号であることを確認したい場合は、Luhnの数字よりもはるかに多くのことを確認する必要があります。

Luhn桁は、転置エラーのチェックのみを目的としており、222222222222222222などの数字で簡単になりすますことができます。

カード番号の最初の6桁を確認する必要があります。これらの数字は発行者識別番号と呼ばれ、番号が認識された範囲内にあることを確認するために使用できます。残念ながら、IINの包括的なリストを見つけるのに苦労するでしょう。特に、発行者が範囲を絶えず追加および削除しているためです。ウィキペディアには非常に基本的な概要があります:銀行カード番号

IINからカードの種類を判別できる場合は、番号の長さも検証することができます。

非常に正当な理由がない限り、検証プラグインのようなものを使用する方がはるかに簡単です。

于 2009-11-06T21:03:07.717 に答える
0

正規表現を使用することをお勧めします...リポジトリを確認できます。Visa、Masterカード、Discovery、American Express、およびセキュリティコードを検証するためのコードスニペットがあります。

https://github.com/leojavier/RegexCollection


覚えておいてください...桁数を制限したからといって、それが正しいとは限りません。

例:
-すべてのVisaカード番号は4で始まります。新しいカードは16桁です。
-すべてのMasterCard番号は51から55までの番号で始まります。すべて16桁です。等々...

index.htmlはサンプルであり、その使用方法を示しています。ご不明な点がございましたら、お気軽にご連絡ください:)

于 2014-11-03T19:19:30.657 に答える