NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
日付 regex Go バリデーター

日付 regex Go バリデーター

YYYY-MM-DD、DD/MM/YYYY、MM-DD-YYYY などのフォーマットの日付を、この Go regex 日付バリデーターで検証できます。フォーム入力、ログ、レポートに最適です。Go Regex テスターでパターンをテストし、メール regex電話番号 regexパスワードバリデーターと組み合わせて完全なデータ検証スイートを構築できます。

日付 regex Go バリデーター - ドキュメント

日付 regex とは何ですか?

Go アプリケーションでログ、ユーザーフォーム、レポート、その他の構造化入力を扱う場合、日付文字列の検証は不可欠です。regex を使って日付を検証することで、データが保存または処理される前に正しいフォーマットで入力されていることを確認できます。

Go では regex を使った検証が基本チェックに適しており、以下のようなフォーマットのマッチングに使用できます。

  • YYYY-MM-DD(ISO フォーマット)

  • DD/MM/YYYY(インドやヨーロッパで一般的)

  • MM-DD-YYYY(米国で一般的)

実際のデータを扱うと、日付フォーマットは多様になります。ドット区切り(例:12.31.2024)、先頭のゼロなし(01/02/2024 ではなく 1/2/2024)、2 桁年(12/31/24)なども見られます。堅牢な regex パターンを構築するには、これらの地域ごとの違いに対応できる柔軟性が求められます。

regex の構成要素を理解する

regex で日付を検証するための主要な構成要素:

  • A-Z : 大文字

  • a-z : 小文字

  • 0-9 : 数字

  • \. : リテラルのドット

  • + : 直前の 1 回以上

  • * : 直前の 0 回以上

  • ? : オプション(0 回または 1 回)

  • ^ : 文字列の先頭

  • $ : 文字列の末尾

日付 regex パターン

ISO フォーマット(YYYY-MM-DD)

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
  • 一致:2024-12-31

  • 不一致:2024-13-01、2024-02-30

API やデータベースで広く使用される標準フォーマットです。

DD/MM/YYYY フォーマット

^(0[1-9]|[12]\d|3[01])/(0[1-9]|1[0-2])/\d{4}$
  • 一致:31/12/2024

  • 不一致:00/00/2024、32/01/2024

インドやヨーロッパで一般的なフォーマットです。

MM-DD-YYYY フォーマット

^(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])-\d{4}$
  • 一致:12-31-2024

  • 不一致:13-01-2024、00-15-2022

米国で広く使われるフォーマットです。

MM/DD/YYYY 日付の regex 構築

このフォーマットの regex を作成する際のステップ:

  • 2 桁の月: (0[1-9]1[0-2]) で月が 01 から 12 であることを確認します。

  • 区切り文字: スラッシュまたはダッシュを許可する [/-] を使用します。

  • 2 桁の日: (0[1-9][12]\d3[01]) で 01 から 31 をカバーします。

  • 4 桁の年: \d{4} を使用します。

^(0[1-9]1[0-2])[/-](0[1-9][12]\d3[01])[/-]\d{4}$

Go で日付を検証する方法

Go で regex を使って日付文字列(YYYY-MM-DD)を検証する例:

package main

import ( "fmt" "regexp" )

func isValidDate(date string) bool { // Regex for YYYY-MM-DD pattern := ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ regex := regexp.MustCompile(pattern) return regex.MatchString(date) }

func main() { dates := []string{"2025-01-30", "2025-13-01", "2024-02-30"} for _, date := range dates { fmt.Printf("Is '%s' valid? %t\n", date, isValidDate(date)) } }

他の一般的なバリエーションへの対応

区切り文字がハイフン(-)、スラッシュ(/)、ドット(.)と異なる場合や、先頭のゼロがない場合(7/5/24)、2 桁の年(05/12/99)を処理する必要がある場合は、以下のようなパターンを検討してください:

^\d{1,2}[/.-]\d{1,2}[/.-]\d{2,4}$
  • 1 桁または 2 桁の日と月を許可

  • /-. を区切り文字として許可

  • 2 桁および 4 桁の年に対応

日付 regex 検証のユースケース

  • フォーム入力検証:ユーザーが生年月日や予約日を正しいフォーマットで入力したか確認します。

  • データクリーンアップ:大量の CSV または JSON データセットで不正な日付を特定して除去します。

  • セキュリティ:API やユーザーフォームで日付インジェクションや不正な文字列の悪用を防ぎます。

  • ログフィルタリング:日付文字列を含むログエントリを解析します。

プロのヒント

  • regex はフォーマットレベルの検証に使用し、日付が実際に存在するかも確認してください(例:2 月 30 日は無効です)。

  • タイムスタンプには regex を拡張してください(例:^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$)。

  • 本番適用前にGo Regex テスターでパターンをテストしてください。

  • regex の効率化のために不要な文字クラス範囲を省略し、パターンをシンプルに保ちましょう。

  • グループ化のみに使用する場合は非キャプチャグループを使用してください。

よくある落とし穴

  • 月や日の先頭のゼロを必須にするのを忘れると、意図しない値が通過してしまいます。

  • 月と日の範囲を制限しないと、無効な値が通過してしまいます。

  • regex は不可能な日付(例:2 月 30 日)を検出できません。追加チェックを組み合わせてください。

組み合わせをお勧めするツール

Frequently Asked Questions

このバリデーターはうるう年の 2 月 29 日のような実際の日付を確認しますか?

いいえ、regex はフォーマットのみを確認します。実際の日付の論理検証には Go の time.Parse() を使用してください。

タイムスタンプの検証にも使用できますか?

時刻を含めるには regex を拡張する必要があります。日付と時刻のフォーマットを両方マッチさせることができます。

過去や未来の日付を確認できますか?

いいえ。regex は構造のみを理解でき、時間範囲は理解できません。

複数のフォーマットを同時にサポートできますか?

ループで複数の regex パターンを使用して、異なるフォーマットをテストできます。

regex と日付パーサーのどちらを使うべきですか?

高速なフロントエンド的チェックには regex を、ロジックの重い実世界の検証には time.Parse() を使用してください。

API を今すぐテストしましょう!

平易な言葉で記述するだけで、Qodex が安全ですぐに実行できるテストに変換します。