【Java】正規表現で使えるバリデーションチェックまとめ(メール・電話・IPアドレスなど)

お疲れ様です。
はるさらと申します。

今回は私が覚えきれずに
プログラミング中に毎回調べてしまう
正規表現を使用したバリデーションチェックの備忘録記事となります。

Webアプリや業務システムを開発していると、
入力値を検証する バリデーションチェック は欠かせません。
その際 正規表現(Regex) を使うことで、
文字列の形式チェックを柔軟に行うことができます。

本記事では、Javaで利用できる代表的なバ正規表現をまとめていきます。
実装にお役立ていただければ幸いです。


Javaで正規表現を使ったチェック方法

Javaでは Pattern クラスと Matcher クラスを利用して、
文字列が正規表現に一致するかを判定できます。

サンプルコード

import java.util.regex.Pattern;

public class validationUtil {

	public static boolean isValid(String input, String regex) {
		return Pattern.matches(regex, input);
	}

	public static void main(String[] args) {
		String email = "test!example.com";
		String emailRegex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
		if(!isValid(email, emailRegex)) {
			System.out.println("メールアドレスの形式に誤りがあります。入力値:" + email );		
		}
	}
}


よく使う正規表現バリデーション一覧

1. メールアドレス

^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$

解説:

  • ^[A-Za-z0-9+_.-]+ → 英数字と一部記号を許可(@の前半部分)
  • @ → 必須の「アットマーク」
  • [A-Za-z0-9.-]+$ → ドメイン部分(例: example.com)

簡易的なメールチェックに適しています。


2. 電話番号(国内)

^0\d{1,4}-\d{1,4}-\d{4}$

解説:

  • ^0 → 先頭は必ず0から始まる
  • \d{1,4} → 市外局番や携帯番号の桁数を考慮(1~4桁)
  • - → ハイフン必須
  • \d{4}$ → 最後は4桁で終了

03-1234-5678090-1234-5678 形式に対応しています。


3. 郵便番号(日本)

^\d{3}-\d{4}$

解説:

  • ^\d{3} → 3桁の数字
  • - → ハイフン
  • \d{4}$ → 4桁の数字

123-4567 のような郵便番号形式に対応しています。


4. 半角数字のみ

^[0-9]+$

解説:

  • ^[0-9]+$ → 数字のみを1文字以上許可

金額や数量のチェックに利用できます。


5. 半角英字のみ

^[A-Za-z]+$

解説:

  • ^[A-Za-z]+$ → 大文字小文字のアルファベットのみを許可

英字だけの名前やコード入力に利用できます。


6. 半角英数字(英数混在OK)

^[A-Za-z0-9]+$

解説:

  • ^[A-Za-z0-9]+$ → 英字・数字を組み合わせた文字列を許可

ユーザーIDやパスワードの基本ルールとして使用できます。


7. パスワード(8文字以上・英大文字小文字数字を含む)

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d]{8,}$

解説:

  • (?=.*[a-z]) → 小文字を最低1つ含む
  • (?=.*[A-Z]) → 大文字を最低1つ含む
  • (?=.*\d) → 数字を最低1つ含む
  • {8,} → 8文字以上

セキュリティ基準を満たすパスワードを
設定してもらうときに活用できます。


8. URLチェック

^https?://[A-Za-z0-9./%#?=&_-]+$

解説:

  • ^https?:// → http または https から始まる
  • [A-Za-z0-9./%#?=&_-]+ → ドメインやパスの許可文字

簡易的なURL形式の確認が可能です。


9. 日付(yyyy-mm-dd)

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$

解説:

  • \d{4} → 西暦4桁
  • (0[1-9]|1[0-2]) → 月は01~12
  • (0[1-9]|[12][0-9]|3[01]) → 日付は01~31

2025-09-09 のような形式をチェックできます。


10. 時刻(HH:mm形式)

^([01]\d|2[0-3]):([0-5]\d)$

解説:

  • ([01]\d|2[0-3]) → 時は00~23
  • ([0-5]\d) → 分は00~59

23:59 までの形式を許可しています。


11. IPv4アドレス

^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$

解説:

  • (25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d) → 0~255 の数値を許可
  • \. → 各ブロックは「.」で区切る
  • {3} → これを3回繰り返す(計4ブロック)

192.168.0.1 のようなIPv4形式をチェック可能です。

まとめ

Javaの正規表現を使うと、入力チェックを簡単に実装できます。

  • Pattern.matches(regex, input) を使うのが基本
  • メール・電話・郵便番号などの日常的な入力チェックに対応
  • パスワードやクレジットカードなど、セキュリティ要件に応じて強化可能
  • 日付やIPアドレスも正規表現で検証可能

実運用では、正規表現に加えて
ビジネスロジックでの検証 も組み合わせるとより堅牢になります。

どなたかのお役に立てば幸いです。
それではまたー!!