NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
クレジットカード regex Java バリデーター

クレジットカード regex Java バリデーター

クレジットカード regex Java バリデーターを使用すると、Java の regex を使って Visa、MasterCard、AMEX などのカードタイプの一般的なパターンにクレジットカード番号が一致するかを即時確認できます。決済システム、サインアップフォーム、eコマースアプリケーションにおいて不可欠な機能です。

入力検証用の他の Java ベースツールも試してみてください。


クレジットカード regex Java バリデーター - ドキュメント

クレジットカード regex とは何ですか?

クレジットカード番号はカードネットワークが定義した厳格なフォーマット標準に従います。クレジットカード regex は、Luhn アルゴリズムなどのさらなる検証の前に番号構造が期待されるフォーマットに合致しているかを確認するために使用されます。

各カードタイプには固有の先頭桁と長さがあります。

カードタイプ

先頭桁

長さ

Visa

4

13 または 16

MasterCard

51〜55 または 2221〜2720

16

AMEX

34 または 37

15

各主要カードネットワークは固有の構造を使用しており、番号を見るだけでカード会社を識別できます。

  • Visa:13 または 16 桁、常に 4 で始まる。

  • MasterCard:16 桁、51〜55 または 2221〜2720 の番号で始まる。

  • Discover:16 桁、6011 または 65 で始まる。

  • American Express:15 桁、34 または 37 で始まる。

  • Diners Club:14 桁、300〜305、36、または 38 で始まる。

  • JCB:2131 または 1800 で始まる 15 桁、または 35 で始まる 16 桁。

クレジットカード用 Java regex パターン

一般的な regex パターン:


Visa:

^4[0-9]{12}(?:[0-9]{3})?$

Mastercard:

^5[1-5][0-9]{14}|^2(2[2-9][0-9]{2}|[3-6][0-9]{3}|7([01][0-9]{2}|20))[0-9]{12}$

American Express:

^3[47][0-9]{13}$

これらのパターンは構造のみをチェックし、実際のカード有効性は確認しません。

Java コード例

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class CreditCardValidator { public static void main(String[] args) { String visaCard = "4111111111111111"; String visaPattern = "^4[0-9]{12}(?:[0-9]{3})?$";

    Pattern pattern = Pattern.compile(visaPattern);
    Matcher matcher = pattern.matcher(visaCard);

    if (matcher.matches()) {
        System.out.println("Valid Visa card number");
    } else {
        System.out.println("Invalid Visa card number");
    }
}

}

複数のカード番号を一度に検証する場合(ユーザーサインアップのファイル検証やバッチ決済処理など)は、Java の regex により効率的に処理できます。

  1. カード番号のリストを作成する: Java の List にカード番号(プレーンまたはハイフン付き)を格納します。

  2. 結合 regex を定義する: Visa、MasterCard、Discover、AMEX、Diners Club、JCB の一般的なフォーマットに一致する単一の regex パターンを構築します。

  3. 反復して検証する: リスト内の各カードをループし、フォーマットをクリーニング(スペースやダッシュを除去)してから regex パターンに対して照合します。

プロのヒント: 常に入力を先にサニタイズし、ユーザーが可読性のために含める可能性のあるスペースやハイフンを除去してください。これにより regex がフォーマットのみを理由に有効な番号を誤って拒否しないようになります。

Luhn アルゴリズム:Java でのクレジットカード番号検証

regex はカード番号の見た目が正しいことを確認しますが、番号自体が実際に有効である可能性があるかどうかはどうやって確認しますか?そこでLuhn アルゴリズムが登場します。これはクレジットカードネットワークが偶発的なタイプミスやほとんどのフェイク番号を検出するために使用するチェックサム方式です。

Java での実装は簡単です。

public class LuhnValidator {
public static boolean isValid(String ccNumber) {
int sum = 0;
boolean alternate = false;
for (int i = ccNumber.length() - 1; i >= 0; i--) {
int n = Character.getNumericValue(ccNumber.charAt(i));
if (alternate) {
n *= 2;
if (n > 9) {
n -= 9;
}
}
sum += n;
alternate = !alternate;
}
return (sum % 10 == 0);
}
}

LuhnValidator.isValid("4111111111111111") を呼び出すと、番号が Luhn チェックをパスすれば true、そうでなければ false を返します。

サンプル入力

有効:

  • Visa:4111111111111111

  • MasterCard:5555555555554444

  • AMEX:371449635398431

無効:

  • 1234567890123456(無効なプレフィックス)

  • 411111111111111(桁数が不正)

  • abcdefg12345678(数字以外の文字を含む)

主なユースケース

  • チェックアウトフォーム:API コールの前にクレジットカード番号フォーマットを検証します。

  • ユーザーオンボーディング:セットアップ中にカードフォーマットが正しいことを確認します。

  • 不正防止:明らかにフェイクなカード番号を素早く拒否します。

  • データクレンジング:ログやデータベースに保存されたカード番号を検証してクレンジングします。

Java における他の一般的な regex ユースケース

正規表現はクレジットカードだけでなく、Java アプリケーションでの入力検証において多岐にわたる用途があります。

  • メールアドレス: 適切にフォーマットされたアドレス(例:user@example.com)をユーザーが提供しているか確認します。

  • 郵便番号: 米国(12345 または 12345-6789)、カナダ(K1A 0B1)、英国(SW1A 1AA)などの国のフォーマットを検証します。

  • 電話番号: 北米((555) 555-1234)および国際フォーマットの有効なパターンを確認します。

  • パスワード: 大文字/小文字、数字、特殊記号の混在など複雑なルールを適用します。

  • 日付: YYYY-MM-DD または MM/DD/YYYY などの受け付けられるフォーマットで入力されていることを確認します。

プロのヒント

  • 生のカード番号を保存しないでください。Java の hash ジェネレーターまたは安全なトークン化サービスを使用してください。

  • 実際のカード番号検証には、regex チェックとLuhn アルゴリズムを必ず組み合わせてください。

  • 不正検出に regex だけに頼らないでください。これはフォーマット検証のためのものであり、正当性の確認ではありません。

  • regex に対して照合する前に、スペースやハイフンを除去して入力をサニタイズしてください。

  • 特定のカードタイプのみをサポートする場合(例:Visa + MasterCard)は regex をカスタマイズしてください。

これらのツールと組み合わせる

Frequently Asked Questions

これはカードが本物かどうかを検証しますか?

いいえ、regex は構造のみをチェックします。正当性を確認するには Luhn アルゴリズムを使用してください。regex は正しくフォーマットされているかを確認できますが、番号が実際に有効である可能性があるかどうかは確認できません。実際の有効性確認には Luhn アルゴリズムを使用することで、ほとんどの偶発的なタイプミスや無効な番号を排除できます。

すべてのカードタイプに 1 つのパターンを使用できますか?

結合することはできますが、明確性のためにカードタイプごとに別々のパターンを保持する方が最善です。

13 桁と 16 桁の Visa カードに違いはありますか?

はい。どちらも発行者によって有効ですので、regex でオプションの桁数を含めてください。

4111-1111-1111-1111 のようなフォーマットされた入力を検証できますか?

はい、ただし regex を変更するか先に入力をサニタイズする必要があります。

有効期限と CVV も確認する必要がありますか?

はい、ただしそれらには別の regex またはフォームフィールドが必要です。このパターンの対象外です。

API を今すぐテストしましょう!

平易な言葉で記述するだけで、Qodex が安全ですぐに実行できるテストに変換します。