
日付 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 mainimport ( "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 日)を検出できません。追加チェックを組み合わせてください。
組み合わせをお勧めするツール
メール regex Go バリデーター - 生年月日と一緒にメールを照合
電話番号 regex Go バリデーター - 数値フィールドの確認
URL regex Go バリデーター - 日付リンクエンドポイントの検証
パスワード regex Go バリデーター - フォームのセキュリティ確認
Go Regex テスター - 複数パターンの実験
Frequently Asked Questions
このバリデーターはうるう年の 2 月 29 日のような実際の日付を確認しますか?
タイムスタンプの検証にも使用できますか?
過去や未来の日付を確認できますか?
複数のフォーマットを同時にサポートできますか?
regex と日付パーサーのどちらを使うべきですか?
Related Articles






