クレジットカード番号バリデーター
開発Luhn チェックサムでカード番号を検証し、発行ブランド(Visa、Mastercard、Amex、UnionPay、Discover)を識別します。すべてブラウザー内で完結します。
リモート URL の取得は行いません。JSON を直接貼り付けてください。
- ブランド
- Luhn チェック
- 長さ
このページの内容
クレジットカード番号バリデーターとは?#
決済カード番号(PAN、Primary Account Number)はランダムな文字列ではありません。先頭の数字は発行者を識別する BIN プレフィクス(Visa は 4 始まり、Mastercard は 51〜55 または 2221〜2720 始まり、など)、全体の長さはブランドごとの狭い帯に収まり、末尾の数字は番号全体が Luhn アルゴリズムを満たすよう計算されたチェックデジットです。バリデーターはこれら 3 つの信号を引き離し、任意の数字列について、それが整形式かどうか — 実在の、発行済みの、支払い可能なカードかどうかではなく — を告げます。
本ページはまさにそれを、完全にブラウザ内で行います。番号を入力または貼り付けると、BIN プレフィクスからブランドを識別し、数字を読みやすい 4 桁グループに整形し、Luhn チェックサムを実行し、そのブランドが実際に使う長さに対してチェックします。これは、チェックアウトフォームを構築するとき(自分のフィールドレベルバリデーションは実 BIN ルールに合致するか?)、Luhn の仕組みを学ぶとき、あるいはテストフィクスチャを妥当性チェックするときに手を伸ばすツールです。
実在のカード番号は決して入力しないでください。 決済ゲートウェイがサンドボックス利用のために公開するテスト PAN を使うか、学習用に自分で生成した番号を使ってください。ここでの処理はすべてローカルで行われ何も送信されませんが、あらゆる PAN を機密として扱うのが正しい習慣です。
使い方#
- 入力の上のプライバシー注記を読みます — 番号がブラウザから出ないことを確認します。
- カード番号フィールドに番号を入力または貼り付けます。スペース、ダッシュ、ドット、文字は自動で剥がされ、
4111-1111 1111.1111を貼り付けると4111111111111111として読まれます。 - サンプルで有名な Visa テスト PAN を読み込むか、クリアでリセットします。
- 結果カードを読みます。
- 評決の行が番号の整形式性を示します。
- ブランドバッジは検出された発行者(Visa、Mastercard、American Express、Discover、UnionPay)または BIN プレフィクスが一致しないとき「不明」を示します。
- グループ表示は 4 桁ごとに整形された数字をコピーReadyで示します。
- 3 つのチェック行がブランド、Luhn チェック(合格/不合格)、長さ(範囲内/範囲外)を別々に報告するため、平坦な「無効」ではなくどのルールが失敗したかが分かります。
主な機能#
- Luhn チェックサム、ゼロから実装。 1960 年代からカードが持続するのと同じアルゴリズムです。右から左へ数字を歩き、1 つおきに 2 倍にし、合計し、10 で割り切れるかチェックします。末尾のチェックデジットこそが、1 桁のタイプミスを必ず失敗させるものです。
- 5 ブランドの BIN プレフィクス検出。 Visa、Mastercard、American Express、Discover、UnionPay を優先順位順にマッチするため、
6始まりのブランド(Discover 6011/65 と UnionPay 62)が衝突しません。 - ブランドごとの長さチェック。 Amex は 15 桁、Visa は 13 または 16 桁、Discover と UnionPay は 16〜19 桁。適用される長さルールは検出されたブランドのもので、プレフィクスが不明なときは汎用の 12〜19 範囲にフォールバックします。
- ロケールセーフな数字の正規化。 アラビア・インド(٤١١١)、ペルシャ、デーヴァナーガリー、ベンガル、全角(123)の数字グリフはすべて検証前に ASCII 0〜9 に transliterate されるため、入力メソッドやロケールによらず同じ PAN が検証されます。
- 表示用の 4 桁グループ化。 16 桁の PAN は
4111 1111 1111 1111になり、15 桁の Amex はおなじみの3782 8224 6310 005(4-4-4-3)になります。 - 厳格にローカル。 バックエンドもネットワークリクエストもなく、PAN はメモリ内で処理され、同じキーストロークで結果カードに描画されます。
実例#
サンプルをクリックして標準的な Visa テスト PAN を読み込むか、4111 1111 1111 1111 と入力します。結果カードは次を読みます。
verdict Valid
brand Visa
grouped 4111 1111 1111 1111
Luhn pass
length ok (16 digits)
次に、厄介なスペースを持つ American Express テスト PAN を試します — 3782 822463 10005 を貼り付けます。ツールはスペースを剥がし、37 プレフィクスから Amex を検出し、Amex 自身のグループ化に再整形します。
verdict Valid
brand American Express
grouped 3782 8224 6310 005
Luhn pass
length ok (15 digits)
最後に、Visa 番号の 1 桁を 4111 1111 1111 1112 に変えます。ブランドと長さは依然として問題ありませんが、Luhn は不合格になり — ツールはどのチェックが壊れたかを隠さず、明示的に告げます。
verdict Invalid
brand Visa
grouped 4111 1111 1111 1112
Luhn fail
length ok (16 digits)
この分離は、フォームをデバッグするときに重要です。Luhn の失敗はタイプミスを指し、長さの失敗は間違ったブランドや切り詰められた貼り付けを指します。
よくある質問#
「有効」はカードが実際に使えるという意味ですか?#
いいえ。「有効」は番号が整形式であることだけを意味します — プレフィクスが既知ブランドに対応し、長さがそのブランドに合致し、Luhn を満たします。カードが発行されたか、アクティブか、資金があるかについては何も述べません。これは、受信箱が存在するかを知らずにメールの形状を検証するのと同じように、フォーマットチェックとして扱ってください。
なぜ Luhn はすべての 1 桁のタイプミスを捕捉するのですか?#
チェックサムが交互の桁を 2 倍にする仕組みのためです。1 桁変えると合計が 10 の倍数には決してならない量だけシフトし、隣接する 2 桁を入れ替えても Luhn が検出する仕方で合計が変わります(1 つの狭い例外を除く)。人間がキーパッドで犯すタイピングミスを捕捉するために正確に設計されました。
貼り付けた番号が非ラテンの数字ですが、動きますか?#
はい。バリデーターは他のことをする前に、アラビア・インド、ペルシャ、デーヴァナーガリー、ベンガル、全角の数字グリフを ASCII に transliterate するため、٤١١١ は 4111 として扱われます。これにより検証はロケールや入力メソッドをまたいで一貫し、表示される「グループ表示」は常に ASCII 数字を使います。
どのカードブランドが認識されますか?#
Visa、Mastercard、American Express、Discover、UnionPay で、公開 BIN プレフィクス範囲で判定します。これらのいずれにも一致しないプレフィクスの番号(例えば 1 や 9 始まり)は「不明」ブランドと報告されますが、長さが汎用 12〜19 範囲に入り Luhn が通れば、依然として整形式として報告されます — 単にモデル化された 5 ブランドのいずれでもないだけです。