クレジットカード番号バリデーター|Luhnアルゴリズム・ブランド判定

クレジットカード番号を入力するとLuhnアルゴリズムでチェックデジットを検証し、Visa・Mastercard・Amex等のブランドを自動判定します。フォームのバリデーション実装確認にも便利です。

[[ labels.client_side_note ]]

[[ labels.format_error ]]
[[ labels.sample_label ]]:
[[ labels.no_input ]]

[[ labels.result_label ]]

[[ labels.formatted_label ]] [[ result.formatted ]]
[[ labels.brand_label ]] [[ brandName ]] [[ labels.brand_unknown ]]
[[ labels.checksum_label ]] ✓ [[ labels.checksum_valid ]] ✗ [[ labels.checksum_invalid ]]

対応ブランドと判定条件(IIN・桁数)

ブランド 先頭の数字(IIN) 桁数
Visa 4 13, 16, 19
Mastercard 51–55, 2221–2720 16
American Express 34, 37 15
Discover 6011, 65 16
JCB 3528–3589 16
Diners Club 300–305, 36, 38 14
UnionPay 62 16–19
広告

カード番号バリデーターとは

クレジットカード番号には、入力ミスを検出するためのチェックデジットが末尾に組み込まれています。Luhnアルゴリズムという計算式で桁の並びを検証すると、1桁の打ち間違いや隣接する桁の入れ替わりの大半を見つけられます。このツールは番号を入力するとその検証を行い、あわせて先頭の数字と桁数からカードブランドを判定します。

重要なのは、これが書式の検証にすぎないという点です。Luhnチェックを通っても、その番号が実在するカードとは限りませんし、利用可能かどうかも分かりません。実際の与信確認は決済代行会社のAPIを通す必要があります。入力した番号はブラウザ内でのみ処理され、外部へ送信されません。

カード番号を検証する手順

  1. 番号を入力する スペースやハイフンが含まれていても自動で除去されるため、コピーした値をそのまま貼り付けられます。
  2. チェックデジットの結果を見る Luhnアルゴリズムによる検証結果が有効・無効で表示されます。無効なら桁のどこかに誤りがあります。
  3. ブランド判定を確認する 先頭の数字と桁数からブランドを推定します。下の対応表で判定条件も確認できます。
  4. サンプルで挙動を試す サンプルボタンでテスト番号を入力できます。実在の番号を使わずに動作を確かめられます。

使いこなすためのヒント

  • 実在するカード番号ではなく、サンプルボタンのテスト番号(Visa: 4111 1111 1111 1111 など)で動作を確認できます。
  • スペースやハイフンが含まれていても自動で除去して判定するため、コピー&ペーストした番号もそのまま入力できます。
  • 本ツールの判定はLuhnアルゴリズムによる書式チェックのみです。実際の与信確認・残高照会は決済代行会社のAPIで行ってください。
  • フォームバリデーションの実装時に、正常系(有効な番号)・異常系(無効な番号)の両方をこのツールで作って確認すると効率的です。

カード番号バリデーターの活用シーン

フォームの入力検証を実装する

自作したバリデーションの判定結果と突き合わせられます。正常系と異常系の両方を用意して確認できます。

ブランド判定のロジックを確かめる

先頭の数字と桁数からどのブランドになるかを対応表で確認できます。カードアイコンの出し分け実装に使えます。

入力ミスを切り分ける

決済が通らないとき、番号自体の書式に誤りがあるのかを先に確認できます。原因の切り分けが早まります。

Luhnアルゴリズムを学ぶ

1桁だけ変えた番号を入れてみると、検証が無効に変わる様子を実際に確認できます。仕組みの理解に役立ちます。

広告

カード番号に関する用語

Luhnアルゴリズム
桁の並びが妥当かを確かめる計算方法です。右から1桁おきに2倍して合計し、10で割り切れれば有効と判定します。
チェックデジット
入力ミスを検出するために末尾へ付けられる数字です。他の桁から計算で導かれます。
IIN
カード番号の先頭にある発行者識別番号です。ここを見ることでブランドや発行元が判別できます。
ブランド
Visa・Mastercard・American Expressなどの国際ブランドです。先頭の数字と桁数の組み合わせで判定します。
与信確認
そのカードが実際に使えるか、利用枠が足りるかを確かめる処理です。書式の検証とはまったく別の手続きです。

よくある質問

いいえ、防げません。本ツールが行っているのはLuhnアルゴリズムによる書式チェックのみで、そのカードが実在するか、利用停止されていないか、残高が十分かどうかは判定できません。実際の与信確認には決済代行会社の認証システムが必要です。

入力された番号はサーバーに送信されず、すべてブラウザ内のJavaScriptで計算が完結します。ただし動作確認が目的であれば、実在の番号ではなくサンプルボタンで提供しているテスト番号のご利用をおすすめします。

1954年にIBMのHans Peter Luhnが考案した誤り検出アルゴリズムです。カード番号の右端から1桁おきに2倍し、各桁の合計が10の倍数になれば書式として有効と判定します。タイプミスの大半を検出できます。

カード番号の先頭の数桁(IIN:発行者識別番号)と桁数の組み合わせから判定しています。例えばVisaは「4」から始まり13・16・19桁、Mastercardは「51〜55」等から始まり16桁、JCBは「3528〜3589」から始まり16桁、といった公開されている規則に基づいています。詳しい対応表はツール下部の「対応ブランドと判定条件」をご覧ください。

いいえ。Luhnアルゴリズムに通るのは「書式として矛盾がない」ことの確認にすぎません。実在しないランダムな数字列でも、末尾の1桁を調整すればLuhnチェックを通過させることができます。
ツールくん

余談ですが ― チェックデジットの父、Hans Peter Luhn

クレジットカード番号の末尾に埋め込まれた「チェックデジット」は、1954年にIBMのエンジニアであるHans Peter Luhn(ハンス・ピーター・ルーン)が考案したアルゴリズムで検証されています。彼はこの功績で1960年に特許を取得しましたが、現在は特許が失効し誰でも自由に利用できる公開アルゴリズムとなっています。

Luhnアルゴリズムの仕組みは意外にシンプルです。カード番号の右端から1桁おきに数字を2倍し、その結果が2桁になる場合は各桁を足し合わせます(例: 8×2=16 → 1+6=7)。すべての桁を合計した数値が10で割り切れれば、そのカード番号は書式として有効と判定されます。

このアルゴリズムはクレジットカードだけでなく、IMEI番号(スマートフォンの識別番号)やカナダの社会保険番号など、さまざまな識別番号のタイプミス検出にも応用されています。ただし注意点として、Luhnアルゴリズムはあくまで「打ち間違いを検出する」ためのものであり、そのカード番号が実在するか、残高があるかどうかを判定するものではありません。

カード番号の先頭6〜8桁は「IIN(発行者識別番号)」と呼ばれ、どの国際ブランド・どの発行銀行が発行したカードかを識別する情報が埋め込まれています。本ツールのブランド判定機能も、このIINの範囲パターンをもとに動作しています。

広告