1. ホーム
  2. regex

[解決済み】うるう年対応の日付形式dd/mm/YYYY, dd-mm-YYYY, dd.mm.YYYY, dd mmm YYY, dd-mmm-YYYY, dd/mmm/YYY, dd.mmm.YYY Yの正規表現で確認する。

2022-04-07 02:10:53

質問内容

日付の文字列を、以下のフォーマットで検証する必要があります。 dd/mm/yyyy を正規表現で指定します。

この正規表現では dd/mm/yyyy のような無効な日付は含まれません。 31/02/4500 :

^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$

を検証するための有効な正規表現とは? dd/mm/yyyy フォーマットをうるう年に対応させることはできますか?

解決方法を教えてください。

貼り付けた正規表現ではうるう年を正しく検証できませんが、検証できる正規表現があります。 同じ投稿で . を取るように修正しました。 dd/mm/yyyy , dd-mm-yyyy または dd.mm.yyyy .

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

Arunさんの回答にあるリンク先で少しテストしてみたところ、さらに ここで で、動作するようです。

2019年2月14日編集:正規表現にあったカンマを削除したところ、以下のような日付が可能になりました。 29-0,-11