カテゴリ: 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入門 第4版を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の正規表現の一覧へ
新着記事
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
Java
Java のカレンダー機能(java.util.Calendar)の使い方
JavaのCalendarクラスの使い方をわかりやすく解説!日付や時刻の操作に便利な基本機能まとめ
Flutter
Dartのパッケージ管理(pubspec.yaml)の使い方
FlutterとDartのパッケージ管理完全ガイド!pubspec.yamlの使い方を初心者向けに徹底解説
Java
Java のミリ秒(Unix タイムスタンプ)を取得・変換する方法
JavaでUnixタイムスタンプ(ミリ秒)を取得・変換する方法を徹底解説!
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク