日付解析の正規表現 — ISO 8601、US形式、EU形式

ISO 8601 (YYYY-MM-DD)、US形式 (MM/DD/YYYY)、ヨーロッパ形式 (DD/MM/YYYY) の日付を解析するための正規表現パターン。名前付きキャプチャグループによる抽出。

Common Patterns

詳細な説明

正規表現による日付解析

日付形式はロケールやシステムによって大きく異なります。正規表現は日付文字列の抽出と検証に使えますが、形式の曖昧さには常に注意が必要です。

ISO 8601形式 (YYYY-MM-DD)

(?<year>\d{4})-(?<month>0[1-9]|1[0-2])-(?<day>0[1-9]|[12]\d|3[01])

これは以下を検証します:

  • 年:任意の4桁
  • 月:01-12
  • 日:01-31

マッチ例:2024-01-152023-12-31

US形式 (MM/DD/YYYY)

(?<month>0[1-9]|1[0-2])/(?<day>0[1-9]|[12]\d|3[01])/(?<year>\d{4})

マッチ例:01/15/202412/31/2023

ヨーロッパ形式 (DD/MM/YYYY または DD.MM.YYYY)

(?<day>0[1-9]|[12]\d|3[01])[/.](?<month>0[1-9]|1[0-2])[/.](?<year>\d{4})

マッチ例:15/01/202431.12.2023

ISO 8601 DateTime

時刻とタイムゾーンを含む完全な日時:

\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)

制限事項

正規表現はすべての日付ロジックを検証できません:

  • 2月30日はパターンを通過してしまいます
  • うるう年の検証にはプログラムロジックが必要です
  • 月と日の対応(4月は30日で31日ではない)は正規表現では表現できません

本番環境の日付検証では、正規表現と日付解析ライブラリを必ず組み合わせてください。

ユースケース

タイムスタンプ付きのログファイルを解析する場合、非構造化テキストから日付を抽出する場合、または複数の形式で日付を受け付け、ユーザーがどの形式を入力したかを識別する必要があるフォームを構築する場合。

試してみる — Regex Cheat Sheet

フルツールを開く