日付の正規表現ジェネレーター&テスター(YYYY-MM-DD・MM/DD/YYYY・ISO 8601)
YYYY-MM-DD・MM/DD/YYYY・DD.MM.YYYY・ISO 8601の日付・時刻の正規表現を、月の日数とうるう年まで考慮して作成し、JS・PHP・Python・Java・.NETのコードも出力します。
Python、.NET、一部のJavaモードでは\dがアラビア・インド数字などの他の文字の数字にも一致するため、\dの代わりに[0-9]を使っています。
(?=…)の先読みが最初に値全体を検査し、その後で名前付きグループが各部分を取り出します。先読みは5つの言語すべてで動作します。
うるう年はグレゴリオ暦の規則に従います。2000年と2024年には2月29日があり、1900年と2023年にはありません。
| 行 | 値 | 結果 | 構成要素または理由 |
|---|---|---|---|
| 1 | 2024-02-29 | 一致 | year=2024, month=02, day=29 |
| 2 | 2023-02-29 | 不一致 | 2023年はうるう年ではありません |
| 3 | 2026-04-31 | 不一致 | 04月は30日までしかありません |
| 4 | 2026-12-01 | 一致 | year=2026, month=12, day=01 |
| 5 | 1900-02-29 | 不一致 | 1900年はうるう年ではありません |
| 6 | 2000-02-29 | 一致 | year=2000, month=02, day=29 |
| 7 | 2026-13-01 | 不一致 | 13月は存在しません |
| 8 | 26-01-01 | 不一致 | 年は4桁にしてください |
| 部分 | ルール |
|---|---|
| year | 4桁。2月29日のうるう年:4で割り切れる年。ただし100の倍数の年は400で割り切れる場合のみ |
| month | 01–12 |
| day | 月に応じて最大31、30、または28/29 |
日付の正規表現では、まずどこまで厳密にするかを決める必要があります。\d{4}-\d{2}-\d{2}は2026-19-45も通してしまいますが、月の日数とうるう年を考慮したパターンなら、2023-02-29を拒否し、2024-02-29を受け入れます。このジェネレーターは、ISO 8601・米国式・欧州式・韓国式・区切りなしの日付、RFC 3339の日時、時刻など、使っている形式に合ったパターンを、選んだ厳密さで作成します。名前付きグループとJavaScript・PHP・Python・Java・C#のコードを用意し、入力した値でそのままテストします。
使い方
- 日付または時刻の形式を選びます。
- パターンの厳密さを選びます。「実在する日付」ではうるう年も考慮されます。
- 言語を選び、値全体を検証するか、テキストから日付を探すかを決めます。
- テスト値を貼り付けて、どの値が一致し、他がなぜ一致しないのかを確認します。
計算式
うるう年 = 4で割り切れる年。ただし100の倍数の年は400で割り切れる場合のみ → (?:\d\d(?:0[48]|[2468][048]|[13579][26])|(?:0[048]|[2468][048]|[13579][26])00)
実在する日付のパターンは、3つの月のグループ(31日の月:01・03・05・07・08・10・12、30日の月:04・06・09・11、28日までの2月)と、うるう年の2月29日用の別の分岐で作られます。名前付きグループを使う場合は、グループが年・月・日に分ける前に、先読み(?=…)が値全体を検査します。どの言語でもASCIIの数字だけが一致するよう、\dではなく[0-9]を使います。検証用のコードは文字列全体のマッチ(^…$でtest、fullmatch、matches、\z)を使うため、末尾の改行は受け付けません。
計算例
YYYY-MM-DDと「実在する日付」では、サンプルのリストは3件が一致します。2024-02-29(2024年はうるう年)、2026-12-01、2000-02-29(2000は400で割り切れる)です。2023-02-29はうるう年でないため、2026-04-31は4月が30日までのため、1900-02-29は100の倍数で400では割り切れないため、2026-13-01は13月がないため、26-01-01は年が4桁必要なために一致しません。
よくある質問
日付を正規表現で検証してよいのでしょうか?
正規表現は、形式の確認や、フォームやログでの簡易チェックに向いています。重要な場面では、タイムゾーンや暦の規則を知っている、使用言語の日付ライブラリでも日付を解析してください。
\dを使わないのはなぜですか?
Python 3、.NET、Unicodeフラグ付きのJavaでは、\dが٣や३のような他の文字体系の数字にも一致します。[0-9]は0〜9にしか一致しません。
文章中の日付にも使えますか?
はい。「テキストから日付を探す」を選んでください。その場合、パターンはより長い数字の内部では一致しないため、12026-01-01から2026-01-01が見つかることはありません。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/date-regex-tool/
このツールを引用する
kakaoCalc. (2026, November 8). 日付の正規表現ジェネレーター&テスター(YYYY-MM-DD・MM/DD/YYYY・ISO 8601). https://kakao.mobile/ja/tools/date-regex-tool/
“日付の正規表現ジェネレーター&テスター(YYYY-MM-DD・MM/DD/YYYY・ISO 8601).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/date-regex-tool/.