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

Javaの正規表現でメールアドレスを検証する方法を徹底解説

メールアドレスに一致する正規表現とは

Javaで入力された文字列が有効なメールアドレス形式かどうかを判定するには、java.util.regexパッケージのPatternクラスとMatcherクラスを使用します。まず、メールアドレスに一致する正規表現を見てみましょう。

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

この正規表現は、メールアドレスの「ローカル部」(@より前)と「ドメイン部」(@以降)の両方を検証するものです。各部分の意味は以下の通りです。

  • ^[\\w!#$%&'*+/=?`{|}~^-]+:ローカル部の先頭部分。英数字・アンダースコア、およびメールアドレスで許容される記号が1文字以上続きます。
  • (?:\\.[...]+)*:ドット(.)で区切られたラベルが0回以上繰り返されることを表します(例:「sample.123」のような形式)。
  • @:ローカル部とドメイン部を区切るアットマークです。
  • (?:[a-zA-Z0-9-]+\\.)+:ドメイン名のラベルとドットの組み合わせが1回以上繰り返されます。
  • [a-zA-Z]{2,6}$:トップレベルドメイン(TLD)が2〜6文字のアルファベットであることを確認します。

サンプルコード

次に、ユーザーから入力された文字列が上記の正規表現に一致するかどうかを判定するJavaプログラムの例を紹介します。

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

public class Example {
   public static void main(String args[]) {
      // ユーザーから文字列を読み込む
      System.out.println("文字列を入力してください");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();
      // メールアドレスに一致する正規表現
      String regex = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";
      // 正規表現をコンパイルしてPatternオブジェクトを生成
      Pattern pattern = Pattern.compile(regex);
      // 入力文字列に対するMatcherオブジェクトを取得
      Matcher matcher = pattern.matcher(input);
      if(matcher.matches()) {
         System.out.println("一致しました");
      } else {
         System.out.println("一致しませんでした");
      }
   }
}

コードのポイント

  • Pattern.compile():正規表現文字列をコンパイルし、再利用可能なPatternオブジェクトを作成します。
  • pattern.matcher(input):検証対象の文字列に対してMatcherオブジェクトを生成します。
  • matcher.matches():文字列全体が正規表現に完全に一致する場合にtrueを返します。

実行結果

有効なメールアドレス「sample.123@gmail.com」を入力した場合の実行結果は以下の通りです。

文字列を入力してください
sample.123@gmail.com
一致しました

このように、正規表現とmatches()メソッドを組み合わせることで、簡単にメールアドレス形式のバリデーションを実装できます。フォーム入力チェックなど、実際のアプリケーションでも広く活用できるテクニックなので、ぜひ覚えておきましょう。

  1. Pythonの正規表現を使ってメールアドレスを検証する方法

    Pythonでは、標準ライブラリの re モジュールを使った正規表現によって、与えられたメールアドレス(メールID)が正しい形式かどうかを簡単に検証できます。以下のコードは、任意のメールアドレスを正規表現でチェックする基本的な例です。サンプルコードimport re s = manogna.neelam@tutorialspoint.com match = re.search(r\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2}\b, s, re.I) print(match.group())実行結果このコードを実行すると、次のような出力が得られます。manogna

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

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