NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
メール regex Java バリデーター

メール regex Java バリデーター

メール regex Java バリデーターを使用して、Java で正規表現がメールアドレスを正しく検証するかどうかを即座に確認できます。ユーザーサインアップの検証、ログインフォームの構築、または入力のサニタイズに役立ちます。関連するユースケースにはJava Regex TesterJava UUID バリデーター、またはJava パスワード regex バリデーターもお試しください。

メール regex Java バリデーター - ドキュメント

Java のメール regex とは何ですか?

Java では、メール regex パターンはユーザー入力が有効なメールフォーマットに従っているかを検証するために使用されます。ローカル部、@ 記号、有効な TLD を持つドメインの存在を確認します。

典型的なメール検証の確認項目:

  • 英数字

  • ユーザー名内のドット、ダッシュ、アンダースコア

  • 少なくとも 1 つの . と 2 文字以上の拡張子を持つ有効なドメイン

有効なメールアドレスと無効なメールアドレスの例

有効:

  • username@domain.com

  • user.name@domain.com

  • user-name@domain.com

  • username@domain.co.in

  • user+tag@gmail.com

無効:

  • username.@domain.com(末尾のドット)

  • .user.name@domain.com(先頭のドット)

  • user..name@domain.com(連続するドット)

  • username@.com(ドメイン名なし)

メール regex パターン比較表

用途に合ったパターンを選択してください:

パターン名

Regex

メリット

デメリット

使用場面

シンプル

^(.+)@(\S+)$

高速、有効なメールをほとんど拒否しない

多くの無効なフォーマットを受け入れる

簡易チェック、重要でないフォーム

標準

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

良いバランス、ほとんどの問題を検出

一部のエッジケースを見逃す

ほとんどのウェブアプリケーション

厳格

^(?=.{1,64}@)[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*@[^-][A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$

長さ制限、連続するドットなし

保守が複雑

ユーザー登録、エンタープライズアプリ

RFC 5322

^[a-zA-Z0-9_!#$%&'*+/=?^{}~|-]+(\.[a-zA-Z0-9_!#$%&'*+/=?^{}~|-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,})$

メール標準に最も近い

複雑で稀なフォーマットを許可

メールプロバイダー、メーリングリスト

OWASP

^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$

セキュリティ重視、十分に検証済み

一部の有効な文字を除外

セキュリティ重視のアプリケーション

本番対応 Java コード例

例 1: 標準的なメール検証

import java.util.regex.*;

public class EmailValidator { private static final Pattern EMAIL_PATTERN = Pattern.compile( "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" );

public static boolean isValid(String email) {
    return EMAIL_PATTERN.matcher(email).matches();
}

public static void main(String[] args) {
    System.out.println(isValid("user@example.com"));    // true
    System.out.println(isValid("user@.com"));           // false
    System.out.println(isValid("john.doe@company.co.in")); // true
}

}

例 2: 厳格な検証(連続するドットなし、長さ制限あり)

import java.util.regex.*;

public class StrictEmailValidator { private static final Pattern STRICT_PATTERN = Pattern.compile( "^(?=.{1,64}@)[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)" + "@[^-][A-Za-z0-9-]+(\.[A-Za-z0-9-]+)(\.[A-Za-z]{2,})$" );

public static void main(String[] args) {
    String[] emails = {
        "user.name@domain.com",      // true
        "user..name@domain.com",     // false(連続するドット)
        ".user@domain.com",          // false(先頭のドット)
        "username.@domain.com"       // false(末尾のドット)
    };
    for (String email : emails) {
        System.out.println(email + ": " + STRICT_PATTERN.matcher(email).matches());
    }
}

}

例 3: 大文字小文字を区別しないマッチング

import java.util.regex.*;

public class CaseInsensitiveEmail { public static void main(String[] args) { Pattern pattern = Pattern.compile( "^[A-Z0-9.%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$", Pattern.CASE_INSENSITIVE ); Matcher matcher = pattern.matcher("John.Doe@Example.COM"); System.out.println("Email Valid: " + matcher.matches()); // true } }

使い方

  1. regex パターンとテスト用メールをバリデーターに貼り付けます。

  2. 内部で Java の Pattern.compile()Matcher.matches() を使用します。

  3. regex が指定されたメールアドレスに正しくマッチするかを即座に確認できます。

メールアドレスの構造

すべてのメールアドレスには 3 つの部分があります:

  • ローカル部: @ の前のユーザー名(例:emma

  • @ 記号: 区切り文字

  • ドメイン部: @ の後のプロバイダー(例:qodex.ai

考慮すべき検証ルール:

  • 許可される文字: ローカル部では文字、数字、. - + %

  • ドットの制限: どちらの部分でも先頭、末尾、連続するドットは不可

  • 長さ制限: ローカル部最大 64 文字、ドメイン最大 255 文字

  • TLD フォーマット: 2〜6 文字のアルファベット(例:.com.museum

Apache Commons Validator の使用をお勧めする理由

本番 Java アプリケーションでは、カスタム regex の代替として Apache Commons Validator の使用を検討してください:

  • 標準準拠: RFC 822 ルールに従い、エッジケースを自動的に処理

  • Unicode サポート: 国際的なメールアドレスをそのまま処理

  • メンテナンスされている: オープンソースコミュニティが積極的に更新

  • シンプルなコード: 複雑な regex パターンの代わりに 1 回のメソッド呼び出し

// 依存関係を追加: commons-validator
import org.apache.commons.validator.routines.EmailValidator;

EmailValidator validator = EmailValidator.getInstance(); boolean isValid = validator.isValid("user@example.com"); // true

プロのヒント

  1. Java では適切にエスケープする: regex 文字列ではダブルバックスラッシュを使用: \. ではなく .

  2. 大文字小文字を区別しない設定: Pattern.compile(regex, Pattern.CASE_INSENSITIVE) を使用

  3. プラスアドレッシングを許可: ローカル部の文字クラスに + を含める: [a-zA-Z0-9._%+-]

  4. regex を超えた検証: regex はフォーマットのみをチェックします。必ず実際のメール確認やドメイン DNS チェックと組み合わせてください。

  5. 一度コンパイルして再利用: 毎回の呼び出しで再コンパイルを避けるため、Pattern.compile() をスタティックフィールドとして使用。

主なユースケース

  • ログイン・サインアップフォーム - フロントエンドとバックエンドでメール入力を検証

  • データクレンジング - データセットから無効なメールレコードをフィルタリング

  • API 検証 - POST リクエスト処理前にメールフォーマットを確認

  • CRM システム - 連絡先レコードで適切なメールフォーマットを強制

組み合わせをお勧めするツール

Frequently Asked Questions

このバリデーターはすべての無効なメールを検出できますか?

いいえ。フォーマットのみをチェックします。ドメインのタイプミスなど有効に見えるが到達不可能なメールは通過する可能性があります。完全な検証には、regex と DNS MX レコードチェックまたは確認メールを組み合わせてください。

このツールは他の言語でのメール検証とどう違いますか?

regex の構文は言語間で似ていますが、Java はマッチングに java.util.regex の Pattern クラスと Matcher クラスを使用し、エスケープシーケンスには文字列リテラルでダブルバックスラッシュ(\\)が必要です。

john.doe@company.co.in のような企業メールを検証できますか?

はい、ここに示すすべてのパターンはサブドメインと .co.in や .museum などの長い TLD をサポートしています。

Unicode や日本語などの特殊文字をサポートしていますか?

標準パターンではサポートしていません。Unicode をサポートするには、regex の [A-Za-z] を \p{L} に置き換えてください。これにより、中国語、キリル文字、アラビア文字など任意の言語の Unicode 文字とマッチします。

Java でのメール検証に最適な regex は何ですか?

ほとんどのアプリケーションでは、標準パターン ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$ が最適なバランスを提供します。セキュリティ重視のアプリには OWASP パターン、最大の標準準拠には RFC 5322 パターンまたは Apache Commons Validator を使用してください。

国際的なメールアドレスを検証するにはどうすれば良いですか?

Unicode 文字に一致させるには、regex の [A-Za-z] の代わりに \p{L} を使用してください。これにより、ローカル部とドメインの両方に非ラテン文字を含むアドレスの検証が可能になります。Java では必ず Pattern.UNICODE_CHARACTER_CLASS フラグを適用してください。

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

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