亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 go-playground/validator.v9 驗證 time.Time 值?

如何使用 go-playground/validator.v9 驗證 time.Time 值?

Go
呼啦一陣風 2022-07-11 16:37:00
我想在我的結構上驗證這個字符串,它是可選的。在驗證區域是否可以驗證 time.Time?或者如果需要一些正則表達式,我怎么能在驗證部分做到這一點?DOB           time.Time          `json:"dob,omitempty" bson:"dob,omitempty" validate:"omitempty"`它將由用戶通過 JSON 傳入,我希望確認用戶傳入的格式是正確的:"2001-03-24T16:21:21.269Z"
查看完整描述

2 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

也許這可以幫助?這是我為我的 ISO8601 格式日期時間所做的


CreatedAt           string  `json:"created_at" validate:"ISO8601date"


func IsISO8601Date(fl validator.FieldLevel) bool {

    ISO8601DateRegexString := "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d{1,9})?(?:Z|[+-][01]\\d:[0-5]\\d)$"

    ISO8601DateRegex := regexp.MustCompile(ISO8601DateRegexString)

  return ISO8601DateRegex.MatchString(fl.Field().String())

}


validate = validator.New()

_ = validate.RegisterValidation("ISO8601date", IsISO8601Date)


查看完整回答
反對 回復 2022-07-11
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

該類型time.Time不是一種string類型,因此您不能對其執行任何“類似字符串”的操作。這意味著您無法檢查它是否具有某種格式,同樣您也不能對其使用正則表達式。

如果您關心用戶發送的格式,則必須更改字段的類型,即DOB string,如果還沒有符合您要求的驗證器,則必須添加自定義驗證功能,因為內置regex驗證器被設計遺漏了。


查看完整回答
反對 回復 2022-07-11
  • 2 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號