Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの正規表現で有効なメールアドレスを検証する方法

入力された文字列が有効なメールアドレスかどうかを判定するには、以下の正規表現パターンと照合します。

"^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$"

正規表現の各要素の意味

  • ^:文字列の先頭に一致します。
  • [a-zA-Z0-9+_.-]:「@」より前の部分で、英字(大文字・小文字)、数字、「+」「_」「.」「-」のいずれか1文字に一致します。
  • +:直前の文字セットが1回以上繰り返されることを表します。
  • @:「@」記号そのものに一致します。
  • [a-zA-Z0-9.-]:「@」より後の部分で、英字(大文字・小文字)、数字、「.」「-」のいずれか1文字に一致します。
  • $:文字列の末尾に一致します。

サンプルコード1:matches()メソッドを使う方法

Stringクラスのmatches()メソッドを使うと、正規表現との照合をシンプルなコードで実現できます。

import java.util.Scanner;

public class ValidatingEmail {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("メールアドレスを入力してください:");
        String email = sc.next();
        String regex = "^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$";
        // 入力されたメールアドレスを正規表現と照合
        boolean result = email.matches(regex);
        if (result) {
            System.out.println("入力されたメールアドレスは有効です");
        } else {
            System.out.println("入力されたメールアドレスは無効です");
        }
    }
}

実行結果1

メールアドレスを入力してください:
example.samplemail@gmail.com
入力されたメールアドレスは有効です

実行結果2

メールアドレスを入力してください:
sample?examplemail@gmail.com
入力されたメールアドレスは無効です

サンプルコード2:PatternとMatcherを使う方法

java.util.regexパッケージのPatternクラスとMatcherクラスを利用すると、同じ正規表現を再利用したり、より柔軟なマッチング処理を行ったりできます。

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

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("名前を入力してください:");
        String name = sc.nextLine();
        System.out.println("メールアドレスを入力してください:");
        String email = sc.next();
        // 有効なメールアドレスを受け付ける正規表現
        String regex = "^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$";
        // Patternオブジェクトを生成
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを生成
        Matcher matcher = pattern.matcher(email);
        // メールアドレスが有効かどうかを検証
        if (matcher.matches()) {
            System.out.println("入力されたメールアドレスは有効です");
        } else {
            System.out.println("入力されたメールアドレスは無効です");
        }
    }
}

実行結果1

名前を入力してください:
vagdevi
メールアドレスを入力してください:
sample.123@gmail.com
入力されたメールアドレスは有効です

実行結果2

名前を入力してください:
raja
メールアドレスを入力してください:
raja$test@gmail.com
入力されたメールアドレスは無効です

補足:この正規表現の限界

上記のパターンは、日常的によく使われるメールアドレス形式の簡易チェックには十分ですが、RFC 5322で定義された正式な仕様を完全にカバーしているわけではありません。実運用のシステムでは、Apache Commons Validatorのような検証ライブラリの活用や、確認メールの送信による実在性チェックと組み合わせることで、より堅牢なバリデーションを実現できます。

  1. Pythonの正規表現でテキストからメールアドレスを抽出する方法

    メールアドレスは非常に複雑で、世界中で統一された標準規格が存在しないため、正規表現だけでメールアドレスを正確に識別するのは容易ではありません。そこで役立つのが RFC 5322 です。この規格ではメールアドレスの形式が定義されており、本記事ではこの形式をもとに、テキストからメールアドレスを抽出する方法を解説します。たとえば、次のような入力文字列が与えられた場合を考えてみましょう。Hi my name is John and email address is john.doe@somecompany.co.uk and my friends email is jane_doe124@gmail.

  2. Javaの正規表現で文字列から数値を抽出する方法

    Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp