
日付 regex Java バリデーター
日付 regex Java バリデーターを使うと、ユーザー入力またはシステム生成の日付文字列が有効なフォーマットに従っているかを確認できます。フォーム、API、バックエンド検証の構築に役立ちます。
その他の Java ツールもお試しください:
日付 regex Java バリデーター - ドキュメント
日付 regex とは何ですか?
日付 regex は、DD/MM/YYYY、MM-DD-YYYY、ISO YYYY-MM-DD のような日付パターンに一致する正規表現です。組み込みの日付パーサーとは異なり、regex はより深い処理の前に不正なフォーマットの入力をフィルタリングできます。
regex は主に以下の用途に使用されます:
フォームのユーザー入力日付フィールドの検証
日付フォーマットによるログやテキスト入力のフィルタリング
API やデータパイプラインでの標準化された入力の強制
日付 regex の仕組み
正規表現(regex)はテキストを検索するためのパターンです。日付の文脈では、メタキャラクター、リテラル、量指定子を組み合わせて、マッチさせたいフォーマットを定義します。
regex はフォーマットの検証だけでなく、複数のパターン出現の確認、要素のグループ化、条件付きマッチングなど、より複雑なシナリオにも対応できます。
一般的な日付 regex パターン
DD/MM/YYYY(先頭のゼロあり)
^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/\\d{4}$一致例:01/01/2023、31/12/1999
不一致例:32/12/2023、15/13/2020
MM-DD-YYYY(ハイフン形式)
^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-\\d{4}$一致例:12-25-2020、01-01-1999
ISO フォーマット YYYY-MM-DD
^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$一致例:2023-08-15、1999-12-31
Java の完全なコード例(DD/MM/YYYY)
import java.util.regex.Pattern; import java.util.regex.Matcher;public class DateValidator { public static void main(String[] args) { String date = "15/08/2023"; String regex = "^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/\d{4}$";
Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(date); if (matcher.matches()) { System.out.println("Valid date format."); } else { System.out.println("Invalid date format."); } }
}
Java での日付フォーマット検証の手順
日付を文字列として受け取ります。
日付を月、日、年のコンポーネントに分解します。
各コンポーネントに対して regex パターンを定義します。
各コンポーネントをパターンと照合します。
すべてのセグメントが一致した場合のみ有効とします。
Java での Pattern と Matcher クラスによる検証
Pattern pattern = Pattern.compile("^\d{4}-\d{2}-\d{2}$");
String dateStr = "2023-05-02";
Matcher matcher = pattern.matcher(dateStr);
if (matcher.matches()) {
// フォーマット有効
} else {
// 不一致
}UTC とタイムゾーンの日時フォーマット
UTC の日時文字列(YYYY-MM-DDTHH:MM:SSZ)を検証するパターン:
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$カスタムタイムゾーンオフセット(+12:00 など)に対応する場合:
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}([+-]\d{2}:\d{2})$ベストプラクティス
入力を受け取る前にトリムして、空白によるマッチ失敗を防ぎましょう。
regex はうるう年や月ごとの日数を検証できません。深い検証には
LocalDate.parse()と組み合わせてください。regex を最初の防衛線として使用し、Java の日付クラスと連鎖させてください。
複数フォーマットをサポートするには、
[/-]のような文字クラスを使って区切り文字を柔軟に処理できます。
よくある落とし穴
先頭のゼロ: パターンが
01と1の両方を想定しているか確認してください。不可能な日付: regex は「2 月 30 日」を止められません。フォーマットのみを確認します。
数値範囲:
00の月や39の日が通過しないよう範囲を確認してください。
サンプル入力
有効:
01/01/2022
12-31-2020
1990-07-15
無効:
32/01/2023
13-15-2022
2021-02-30
組み合わせをお勧めするツール
Java Regex テスター:カスタムパターンを直接テスト
UUID regex Java バリデーター:ユーザー ID とタイムスタンプの組み合わせ
Base64 エンコーダー:タイムスタンプ付きデータのエンコード
トークンジェネレーター:検証済み日付文字列とセキュアトークンの組み合わせ
メール regex Java バリデーター:フォームでメールフィールドと日付を同時に検証
Frequently Asked Questions
この regex はうるう年を検証できますか?
スラッシュとダッシュの両方をサポートしたい場合は?
[/\\-] のような文字グループを使って / または - の両方を許可するよう regex を変更できます。すべての日付検証に regex を使うべきですか?
regex は日付パーシングより高速ですか?
API に推奨されるフォーマットは何ですか?
Related Articles






