web-dev-qa-db-ja.com

カード番号からカードの種類を特定

このようなカードタイプの配列があります

var cards = new Array();

cards [0] = {name: "VISA", length: "13,16", prefixes: "4", checkdigit: true};
cards [1] = {name: "VISA_DELTA/ELECTRON", length: "16", prefixes: "417500,4917,4913",     checkdigit: true};

ただし、入力したカード番号に応じて、カードタイプを見つけることができます。たとえば、ドロップダウンリスト、つまりビザからカードの種類を選択する場合、クレジットカード番号は4で始まる必要があります。そうでない場合、フォームを送信すると、ある種のメッセージが表示されます(どのカードでも、カードを変更してください)。タイプ)。任意の助けいただければ幸いです。

カード番号テキストフィールドのIDはCardNumberです。他にどのような情報が必要かわからないので、フォームの残りの部分を検証するValidateという関数と、luhnチェックを実行する関数呼び出しCalculateがあります。

21
Ghatzi

あなたはおそらくこのようなものを探していると思います:

<script type="text/javascript">
function GetCardType(number)
{
    // visa
    var re = new RegExp("^4");
    if (number.match(re) != null)
        return "Visa";

    // Mastercard 
    // Updated for Mastercard 2017 BINs expansion
     if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(number)) 
        return "Mastercard";

    // AMEX
    re = new RegExp("^3[47]");
    if (number.match(re) != null)
        return "AMEX";

    // Discover
    re = new RegExp("^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)");
    if (number.match(re) != null)
        return "Discover";

    // Diners
    re = new RegExp("^36");
    if (number.match(re) != null)
        return "Diners";

    // Diners - Carte Blanche
    re = new RegExp("^30[0-5]");
    if (number.match(re) != null)
        return "Diners - Carte Blanche";

    // JCB
    re = new RegExp("^35(2[89]|[3-8][0-9])");
    if (number.match(re) != null)
        return "JCB";

    // Visa Electron
    re = new RegExp("^(4026|417500|4508|4844|491(3|7))");
    if (number.match(re) != null)
        return "Visa Electron";

    return "";
}
</script>

最初にここに投稿されました@ http://mel-green.com/2008/11/determine-credit-card-type-with-javascript/

49
Russ Clarke

カード会社には、カードタイプに固有のかなり明確なプレフィックスのリストがあります。

これらのプレフィックスの範囲は、1桁(「5」で始まるものはすべてMastercardです)から、6桁または7桁までの文字列まであります。あいまいなカードタイプやメインストリームカードでも、カードタイプだけでなく、また、発行銀行。

これが私が見つけた1つのリソースです: http://www.beachnet.com/~hstiles/cardtype.html

ウィキペディアもご覧ください: http://en.wikipedia.org/wiki/Credit_card_numbers

マイナス面は、現在流通しているプレフィックスがほぼ修正されている一方で、さらに多くのものが必要になる可能性が常にあるため、プレフィックスリストを最新の状態に保つ必要があることです。 、特にそれを使用してより長いプレフィックス範囲をチェックする場合。

2
Spudley

これはまさにこれのために設計されたjQueryプラグインです:

http://jquerycreditcardvalidator.com/

クレジットカード番号とカードタイプの関係についての優れた説明については、このStackOverflowの回答もご覧ください。

https://stackoverflow.com/a/72801/12484

1
Jon Schneider

カードプレフィックススキームはBIN(銀行ID番号)リストで詳細に説明されており、定期的に変更されます。定期的な更新を計画してのみ実行しない限り、PAN最初の2桁を大まかにチェックします(たとえば、ビザ/エレクトンの48 *が欠落しており、ビザの長さは16〜19に及ぶ場合があります)。

英国にいる場合; http://www.barclaycard.co.uk/business/documents/pdfs/bin_rules.pdf

1
Alex K.