日付解析の正規表現 — 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-15、2023-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/2024、12/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/2024、31.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日ではない)は正規表現では表現できません
本番環境の日付検証では、正規表現と日付解析ライブラリを必ず組み合わせてください。
ユースケース
タイムスタンプ付きのログファイルを解析する場合、非構造化テキストから日付を抽出する場合、または複数の形式で日付を受け付け、ユーザーがどの形式を入力したかを識別する必要があるフォームを構築する場合。