NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
日付 regex Java バリデーター

日付 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 での日付フォーマット検証の手順

  1. 日付を文字列として受け取ります。

  2. 日付を月、日、年のコンポーネントに分解します。

  3. 各コンポーネントに対して regex パターンを定義します。

  4. 各コンポーネントをパターンと照合します。

  5. すべてのセグメントが一致した場合のみ有効とします。

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 の日付クラスと連鎖させてください。

  • 複数フォーマットをサポートするには、[/-] のような文字クラスを使って区切り文字を柔軟に処理できます。

よくある落とし穴

  • 先頭のゼロ: パターンが 011 の両方を想定しているか確認してください。

  • 不可能な日付: regex は「2 月 30 日」を止められません。フォーマットのみを確認します。

  • 数値範囲: 00 の月や 39 の日が通過しないよう範囲を確認してください。

サンプル入力

有効:

  • 01/01/2022

  • 12-31-2020

  • 1990-07-15

無効:

  • 32/01/2023

  • 13-15-2022

  • 2021-02-30

組み合わせをお勧めするツール

Frequently Asked Questions

この regex はうるう年を検証できますか?

いいえ、regex はうるう年のようなカレンダールールを評価できません。フォーマット検証後に Java の LocalDate クラスを使用してください。

スラッシュとダッシュの両方をサポートしたい場合は?

[/\\-] のような文字グループを使って / または - の両方を許可するよう regex を変更できます。

すべての日付検証に regex を使うべきですか?

フォーマット確認には regex を使用してください。論理検証(例:2 月 30 日なし)には日付パーシングを使用してください。

regex は日付パーシングより高速ですか?

はい、フォーマット確認については高速です。ただしパーシングは不可欠な論理検証を追加するため、その後も使用すべきです。

API に推奨されるフォーマットは何ですか?

ISO 8601(YYYY-MM-DD)が標準で、広くサポートされています。

API を今すぐテストしましょう!

平易な言葉で記述するだけで、Qodex が安全ですぐに実行できるテストに変換します。