
日付 regex Python バリデーター
日付 regex Python バリデーターを使うと、YYYY-MM-DD、MM/DD/YYYY、DD-MM-YYYY などの一般的な日付フォーマットに入力が一致するかを確認できます。データ収集システム、ウェブアプリ、フォーム検証ロジックに特に役立ちます。数値 regex Python バリデーターと組み合わせてタイムスタンプと数量を検証したり、メール regex Python バリデーターでユーザープロフィールを完全に検証したりできます。
日付 regex Python バリデーター - ドキュメント
日付 regex とは何ですか?
日付 regexは、有効な日付を表す文字列値に一致するものです。一般的なフォーマット:
YYYY-MM-DD → 2024-12-31
MM/DD/YYYY → 12/31/2024
DD-MM-YYYY → 31-12-2024
regex は構造が正しいかを確認しますが、論理的な有効性(例:2 月 31 日は構造的には「有効」)は確認できません。
regex はデータ検証に不可欠なツールです。入力が YYYY-MM-DD、MM/DD/YYYY、DD-MM-YYYY などの特定の日付フォーマットに一致するかを素早く確認できます。ただし、「2023-02-31」や「13/13/2022」のような構造的には正しく見えても実際には存在しない日付を受け入れる可能性があります。より深い検証には regex と追加のロジックや日付処理ライブラリを組み合わせてください。
日付の区切り文字の処理
区切り文字のバリエーションに対応するには文字セットを使用します。スラッシュ(/)、ハイフン(-)、ドット(.)のいずれかを許可するには [\/\-.] を使います:
MM/DD/YYYY、MM-DD-YYYY、MM.DD.YYYY に一致するパターン:
^(0[1-9]|1[0-2])[\/\-.](0[1-9]|[12][0-9]|3[01])[\/\-.]\d{4}$
日付 regex パターンの構築手順
1. 月の照合
(0[1-9]1[0-2]) で 01 から 12 の有効な月のみを照合します。
2. 日の照合
(0[1-9][12][0-9]3[01]) で 01 から 31 をカバーします。
3. 区切り文字の追加
[/-] で / または - を許可します。
4. 年の照合
\d{4} で 4 桁の年を照合します。
5. 組み合わせ
^(0[1-9]1[0-2])[/-](0[1-9][12][0-9]3[01])[/-]\d{4}$一般的な日付フォーマットの regex パターン
ISO フォーマット(YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$米国フォーマット(MM/DD/YYYY)
^(0[1-9]|1[0-2])/([0][1-9]|[12][0-9]|3[01])/\d{4}$ヨーロッパフォーマット(DD-MM-YYYY)
^([0][1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\d{4}$
Python コード例
import redef is_valid_date(date_str): pattern = re.compile( r'^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$' ) return bool(pattern.fullmatch(date_str))
テストケース
dates = ["2025-06-12", "2025-02-29", "1999-13-01", "2025-06-31"] for date in dates: print(f"{date} -> {is_valid_date(date)}")
ユースケース
フォーム検証:生年月日、イベント日付、予約入力の検証
API:ペイロードの有効な日付文字列を強制
データベース:挿入前の日付文字列の事前検証
組み合わせ:メール regex Python バリデーター、UUID regex Python バリデーター、電話番号 regex Python バリデーターと組み合わせ
プロのヒント
実際の日付検証には regex と合わせて
datetime.strptimeを使用してください。regex は「2025-02-30」のような論理エラーを検出できません。
パフォーマンスの最適化には非キャプチャグループを使用してください。
不要な文字クラス範囲を避けて、パターンをシンプルかつ読みやすく保ちましょう。
うるう年、月末、空白など、エッジケースを必ずテストしてください。
数値 regex Python バリデーターと組み合わせて、レポートの数値フィールドも検証できます。
よくある落とし穴
先頭のゼロの欠如:「2024-2-9」が通過しないよう、パターンが厳格か確認してください。
不可能な日付の許可:regex は「2024-02-30」や「1999-13-01」を止められません。構造のみを確認します。
緩い範囲:月に「00」や日に「32」が通過しないよう範囲を確認してください。
regex は正しいフォーマットかどうかの確認に使い、Python の datetime.strptime() と組み合わせて実際の無効な日付をキャッチするのが最善です。
Frequently Asked Questions
この regex はうるう年を検出できますか?
月として 13 を入力した場合はどうなりますか?
Django フォームバリデーターで使用できますか?
複数のフォーマットを同時にサポートするには?
オプションまたは空の日付フィールドを許可したい場合は?
Related Articles






