カテゴリ: Spring 更新日: 2025/12/22
PR
独学でJavaを学んでいる方向け
「実務レベルに到達できるか不安」「1人だと詰まることが多い」場合は、 実践重視で学べる環境を一度確認しておくのも一つの手です。
EBAエデュケーション |学習内容・サポートを見る

JavaのSpringで使う@Patternアノテーションを徹底解説!初心者でも理解できる正規表現バリデーション入門

Springの@Patternアノテーション
Springの@Patternアノテーション

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

生徒

「Springで入力チェックをしたいときに@Patternというアノテーションを見つけたんですが、これはどんなものなんですか?」

先生

@Patternは、文字列が正規表現に一致するかどうかをチェックするバリデーションアノテーションです。例えばメールアドレスや電話番号の形式チェックに使えます。」

生徒

「なるほど!正規表現を使えば細かいルールを設定できるんですね。」

先生

「その通りです。具体的な使い方を見ていきましょう。」

1. @Patternアノテーションとは?

1. @Patternアノテーションとは?
1. @Patternアノテーションとは?

@Patternは、JavaのJakarta Validation仕様に用意されている文字列専用の入力チェック用アノテーションです。指定した正規表現(Regex)に文字列が一致しているかどうかを自動で判定してくれるため、Spring BootやSpring MVCのフォーム入力チェックでよく使われます。

初心者の方は、「文字の並び方にルールを決めるためのアノテーション」と考えると分かりやすいでしょう。たとえば「数字だけ許可する」「ハイフン付きの郵便番号だけOK」「決まった形式のメールアドレスか確認する」といったチェックを、if文を書かずに実現できます。

実際には、次のようにフィールドの上に@Patternを付けて、regexpでルールを書くだけです。


import jakarta.validation.constraints.Pattern;

public class SampleForm {

    // 半角数字のみを許可する
    @Pattern(regexp = "^[0-9]+$", message = "数字のみで入力してください")
    private String number;

}

この例では、numberに数字以外の文字(アルファベットや記号など)が含まれているとバリデーションエラーになります。入力された値がルールに合っているかどうかを、Springが自動でチェックしてくれるのが特徴です。

@Patternは電話番号・郵便番号・会員ID・パスワードなど、「形式が決まっている文字列」のチェックと相性が良く、Webアプリケーションでは欠かせない基本的なバリデーションのひとつです。

2. 基本的な使い方

2. 基本的な使い方
2. 基本的な使い方

ここでは、@Patternの基本として「電話番号は数字だけで入力してほしい」という、よくある入力チェックを例に確認します。電話番号の欄にハイフンやスペース、全角数字が混ざると、システム側で扱いにくくなることがあるため、まずは半角数字のみに制限するのが定番です。

ポイントは、regexp(正規表現)で「許可する文字のルール」を書くことです。次の例では、^[0-9]+$で「先頭から最後まで数字だけ」という意味になります。


import jakarta.validation.constraints.Pattern;

public class UserForm {

    // 電話番号は半角数字のみ(例:09012345678)
    @Pattern(regexp = "^[0-9]+$", message = "電話番号は半角数字のみで入力してください")
    private String phone;

    // getter setter 略
}

もしphoneに「090-1234-5678」や「09012345678」のような値が入ると、ルールに合わないためバリデーションエラーになります。messageを日本語にしておくと、入力する人も「何を直せばいいか」がすぐ分かります。

なお、最初は難しく感じるかもしれませんが、@Patternは「文字列の形をそろえるための道具」です。電話番号のほかにも、郵便番号・会員ID・パスワードなど、形式が決まっている入力に同じ考え方で使えます。

PR

将来を見据えて、+αのスキルを身につけたい方へ

JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。

AIを学ぶならアイデミープレミアム

3. Spring MVCでの利用方法

3. Spring MVCでの利用方法
3. Spring MVCでの利用方法

フォームやAPIで受け取った値をSpring MVCでチェックしたいときは、コントローラ側で@Validated(または@Valid)を付けるのが基本です。これだけで、フォームクラスに書いた@Patternなどのバリデーションが自動で実行されます。

初心者の方は「コントローラに入ってきた時点で、まず入力の形式チェックをする」と覚えると分かりやすいです。電話番号やメールアドレスの形式が違うまま処理を進めると、後でエラーになったり、検索や登録がうまくいかなかったりするため、入口で止めるのが安全です。


import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/user")
public class UserController {

    @PostMapping("/register")
    @ResponseBody
    public String register(@Validated @RequestBody UserForm form, BindingResult result) {

        // 正規表現に一致しない場合はここでエラーになる
        if (result.hasErrors()) {
            return "入力内容に誤りがあります(電話番号の形式などを確認してください)";
        }

        return "登録された電話番号: " + form.getPhone();
    }
}

この例では、UserFormphone@Patternが付いている前提です。もし「090-1234-5678」のように正規表現に合わない値が送られてきた場合、result.hasErrors()がtrueになり、登録処理に進まずメッセージを返せます。

「どの画面(どのAPI)でも同じルールで入力チェックしたい」という場面でも、フォーム側に@Pattern、コントローラ側に@Validatedという組み合わせにしておくと、コードが散らばらず整理しやすくなります。

4. よく使う正規表現の例

4. よく使う正規表現の例
4. よく使う正規表現の例

@Patternは正規表現を自由に設定できるため、用途に応じたルールを実装できます。代表的な例をいくつか挙げます。

  • 郵便番号(例: 123-4567): ^\d{3}-\d{4}$
  • メールアドレス(簡易版): ^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$
  • アルファベットのみ: ^[A-Za-z]+$

これらを@Patternregexp属性に設定することで、入力値を効率的にチェックできます。

5. エラーメッセージのカスタマイズ

5. エラーメッセージのカスタマイズ
5. エラーメッセージのカスタマイズ

@Pattern違反時のエラーメッセージはmessage属性や外部プロパティファイルで変更可能です。messages.propertiesに定義すれば、複数箇所で使える共通のエラーメッセージを設定できます。


Pattern.userForm.phone=電話番号の形式が正しくありません

このようにすることで、プロジェクト全体で統一されたメッセージを表示できます。特に大規模システムではメッセージを一元管理することが重要です。

6. 他のバリデーションとの組み合わせ

6. 他のバリデーションとの組み合わせ
6. 他のバリデーションとの組み合わせ

@Patternは他のバリデーションアノテーションと組み合わせて使うと効果的です。例えば、必須入力かつ形式チェックを行いたい場合は@NotNull@NotBlankと一緒に使います。


import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;

public class Member {
    @NotBlank
    @Pattern(regexp="^[A-Za-z0-9]{6,12}$", message="ユーザーIDは半角英数字6〜12文字で入力してください")
    private String userId;
}

この場合、空文字が送信されたり、規則に従わない文字列が送られたりすると、エラーメッセージが返されます。

7. 実際の活用シーン

7. 実際の活用シーン
7. 実際の活用シーン

@Patternは、ECサイトや会員登録フォーム、予約システムなど多くの場面で使われます。例えば、メールアドレスの形式をチェックして不正なアドレスを弾く、会員IDを英数字のみに制限する、パスワードに特定の条件を課すといった用途です。

Spring Bootと組み合わせることで、これらのチェックをサーバー側で自動的に行えるため、フロントエンドだけに依存しない堅牢なアプリケーションを作成できます。特にセキュリティやデータの整合性を重視するシステムでは欠かせない機能となります。

関連記事:
カテゴリの一覧へ
新着記事
PR

JavaやLinuxの検証環境に
低コストで使えるVPS

JavaのEnumクラスの使い方を完全ガイド!初心者でもわかるjava.lang入門
JSPのコメントの書き方!HTMLコメントとの違いもわかりやすく解説
JSPとServletの違いとは?役割分担と連携の基本を初心者向けに説明
Springでバルク更新・一括挿入を高速に!flush・clearの使い方と最適化のベストプラクティス
PR 未経験からITエンジニアを目指す方へ

Javaを学んでいるけど、「このまま未経験で就職できるか不安」という20代向け。 学歴不問・無料サポートの就職支援という選択肢があります。

Tamesy |無料で面談予約
人気記事
No.1
Java&Spring記事人気No1
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.2
Java&Spring記事人気No2
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
PR

ローカルPCに依存しない開発環境という選択肢

Java・Linuxの検証や学習環境を、クラウド上ですぐに用意できます。

Java入門

Javaの基礎を体系的に学びたい場合は、文法だけでなく 「なぜそう書くのか」まで丁寧に解説されているため、 初心者でも理解しやすい定番の1冊です。

スッキリわかるJava入門 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Java実践

ジェネリクス、enum、シールクラスなどの型設計から、 関数型プログラミング(ラムダ式・Stream API)、 JVM制御やリフレクション、外部ライブラリの活用までを扱っており、 「Javaを使えるレベル」へ進むための内容が網羅されています。

スッキリわかるJava入門 実践編 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Spring入門

Spring Frameworkの全体像から、 Webアプリ開発で必要となる主要機能までを 体系的に解説している定番の入門書です。

Spring徹底入門 第2版 Spring FrameworkによるJavaアプリケーション開発

※ 紙の書籍・電子書籍どちらでも購入できます

PR 実務経験のあるエンジニア向け

Javaなどの実務経験があり、次のキャリアを検討している方向け。 IT・ゲーム業界に特化した転職支援サービスという選択肢もあります。

転職ボックス |IT・ゲーム業界専門