カテゴリ: Javaの正規表現 更新日: 2026/06/04

Javaの正規表現でメールアドレスの形式をチェックする方法を初心者向けに完全解説

389
Java の正規表現で「メールアドレス」の形式をチェックする方法

先生と生徒の会話形式で理解しよう

生徒

「Javaでユーザー登録を作ろうとしたら、メールアドレスの形式チェックが必要になりました……どうやって判定すればいいんですか?」

先生

「その場合は、Javaの正規表現を使うと、メールアドレスの形かどうかをまとめてチェックできます。」

生徒

「正規表現って、記号が多くて難しそうなイメージがあります……」

先生

「メールアドレス用の基本パターンから覚えれば大丈夫です。考え方を順番に見ていきましょう。」

生徒

「初心者でも使えるレベルの方法が知りたいです!」

先生

「では、Javaの正規表現でメールアドレスをチェックする方法を、基礎から説明していきます。」

1. Javaでメールアドレス形式チェックが必要な理由

1. Javaでメールアドレス形式チェックが必要な理由
1. Javaでメールアドレス形式チェックが必要な理由

JavaでWebアプリケーションや業務システムを作成すると、 メールアドレスの入力チェックが必要になる場面が非常に多くあります。 ユーザー登録、問い合わせフォーム、通知設定など、メールアドレスは頻繁に登場します。

もし形式チェックを行わずに処理を進めると、 「@が入っていない」「ドメインがない」など、 明らかに不正な文字列でも登録できてしまいます。 こうした問題を防ぐために、正規表現によるチェックが重要になります。

2. メールアドレスの基本的な構造を理解しよう

2. メールアドレスの基本的な構造を理解しよう
2. メールアドレスの基本的な構造を理解しよう

正規表現を書く前に、メールアドレスの基本構造を理解しておくことが大切です。 一般的なメールアドレスは、「ユーザー名」「@」「ドメイン名」で構成されています。

たとえば、user@example.com のように、 @の前後に文字列があり、ドメインにはドットが含まれるのが基本形です。 Javaの正規表現では、この構造をルールとして表現します。

3. Javaの正規表現でメールアドレスをチェックする考え方

3. Javaの正規表現でメールアドレスをチェックする考え方
3. Javaの正規表現でメールアドレスをチェックする考え方

Javaの正規表現では、「この文字が使える」「この形で並んでいる」という条件を指定します。 メールアドレスの場合は、英字・数字・記号の組み合わせと、 @やドットの位置関係をルールとして表します。

完璧なメールアドレス仕様をすべて網羅する正規表現は非常に複雑になります。 初心者のうちは、「一般的な形式かどうか」をチェックする実用的な正規表現を使うのがおすすめです。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第5版をAmazonで見る

※ Amazon広告リンク

4. 基本的なメールアドレスチェック用の正規表現

4. 基本的なメールアドレスチェック用の正規表現
4. 基本的なメールアドレスチェック用の正規表現

Java初心者向けに、まずは分かりやすいメールアドレス用の正規表現を紹介します。 このパターンは、多くの場面で使われている基本形です。


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

public class EmailCheckBasicExample {
    public static void main(String[] args) {
        String email = "test@example.com";
        Pattern pattern = Pattern.compile("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$");
        Matcher matcher = pattern.matcher(email);

        System.out.println(matcher.matches());
    }
}

true

この正規表現では、「@が1つ含まれていること」「ドメインにドットが含まれていること」などをチェックしています。 実務でもよく使われる、初心者向けのメールアドレス判定方法です。

5. 正規表現の各部分をやさしく分解して理解する

5. 正規表現の各部分をやさしく分解して理解する
5. 正規表現の各部分をやさしく分解して理解する

正規表現は一見すると難しく見えますが、部分ごとに見ると意味が分かります。 英字や数字を表す部分、@を表す部分、ドメイン部分などが組み合わさっています。

Java初心者は、「メールアドレス全体を一度に理解しよう」とせず、 「この部分はユーザー名」「ここはドメイン」と分けて考えるのがコツです。 そうすることで、正規表現への苦手意識が減っていきます。

6. 不正なメールアドレスをチェックしてみる

6. 不正なメールアドレスをチェックしてみる
6. 不正なメールアドレスをチェックしてみる

正規表現が正しく動いているかを確認するために、 不正なメールアドレスを使った例も見てみましょう。 これにより、形式チェックの効果が分かりやすくなります。


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

public class EmailCheckInvalidExample {
    public static void main(String[] args) {
        String email = "testexample.com";
        Pattern pattern = Pattern.compile("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$");
        Matcher matcher = pattern.matcher(email);

        System.out.println(matcher.matches());
    }
}

false

@が含まれていないため、正規表現に一致せず false になります。 このように、Javaの正規表現を使うことで、不正な形式を確実に弾くことができます。

7. メールアドレスチェックでよくある注意点

7. メールアドレスチェックでよくある注意点
7. メールアドレスチェックでよくある注意点

メールアドレスの仕様は非常に幅広く、 実際にはかなり複雑なルールが存在します。 そのため、正規表現ですべてを完全に判定しようとすると難しくなります。

Java初心者の場合は、「一般的な形式かどうか」をチェックするだけで十分なケースがほとんどです。 厳密なチェックが必要な場合は、用途に応じて正規表現を調整する考え方が大切です。

8. Java初心者が正規表現でメールチェックを学ぶメリット

8. Java初心者が正規表現でメールチェックを学ぶメリット
8. Java初心者が正規表現でメールチェックを学ぶメリット

Javaの正規表現でメールアドレスをチェックできるようになると、 入力チェック処理が一気にシンプルになります。 長い条件分岐を書かずに、短いルールで判定できる点が大きなメリットです。

また、正規表現の考え方はJava以外の言語でも共通しています。 ここで基礎を身につけておくことで、 今後のプログラミング学習でも役立つ知識になります。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaの正規表現を使ってメールアドレスの形式チェックを行うメリットは何ですか?(ジャバ ノ セイキヒョウゲン)

Javaの正規表現(せいきひょうげん)を使用してメールアドレスの形式チェックを行う最大のメリットは、複雑な文字列パターンの判定を非常に短いコードで記述できる点にあります。もし正規表現を使わずに、メールアドレスの中にアットマークがあるか、ドメインにドットがあるか、使用禁止の記号が混ざっていないかなどを一つずつ条件分岐でチェックしようとすると、プログラムのソースコードが非常に長く、読みにくいものになってしまいます。Javaの標準ライブラリであるパターンクラス(Pattern class)やマッチアークラス(Matcher class)を活用することで、入力された文字列が特定のルールに合致しているかどうかを一瞬で判定でき、開発効率とコードの保守性が大幅に向上します。
Javaの正規表現の一覧へ
新着記事
Flutter
FlutterのInheritedWidgetとは?仕組みと活用方法
FlutterのInheritedWidgetとは?仕組みと活用方法を初心者向けにやさしく解説
Flutter
Blocパターンの仕組みと導入方法をわかりやすく解説
FlutterのBlocパターンを完全ガイド!初心者でもわかる状態管理と導入方法
Python
NumPyのdstackの使い方!3次元配列を結合する方法
NumPyのdstackの使い方!3次元配列を結合する方法
Python
Seaborn catplotの基本的な使い方と主要引数(kind・hue・col・row)を徹底解説
Seaborn catplotの基本的な使い方と主要引数(kind・hue・col・row)を徹底解説
人気記事
Flutter
Flutterの開発に必要なもの!パソコン・ツール・OSなど準備まとめ
Flutterの開発に必要なもの!パソコン・ツール・OSなど準備まとめ
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク