
クレジットカード 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 により効率的に処理できます。
カード番号のリストを作成する: Java の
Listにカード番号(プレーンまたはハイフン付き)を格納します。結合 regex を定義する: Visa、MasterCard、Discover、AMEX、Diners Club、JCB の一般的なフォーマットに一致する単一の regex パターンを構築します。
反復して検証する: リスト内の各カードをループし、フォーマットをクリーニング(スペースやダッシュを除去)してから 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 をカスタマイズしてください。
これらのツールと組み合わせる
パスワード regex Java バリデーター:サインアップフローにセキュアなパスワード検証を追加します。
Java regex テスター:他のカードタイプの regex バリエーションを編集またはテストします。
トークンジェネレーター:安全な決済セッション token を生成します。
Base64 エンコーダー:クレジットカード token を安全な転送のためにエンコードします。
Frequently Asked Questions
これはカードが本物かどうかを検証しますか?
すべてのカードタイプに 1 つのパターンを使用できますか?
13 桁と 16 桁の Visa カードに違いはありますか?
4111-1111-1111-1111 のようなフォーマットされた入力を検証できますか?
有効期限と CVV も確認する必要がありますか?
Related Articles






