参考地址: https://github.com/go-playground/validator/blob/master/_examples/translations/main.go
编写校验函数
// ValidateMobile 自定义手机号校验器
func ValidateMobile(fl validator.FieldLevel) bool {
mobile := fl.Field().String()
// 使用正则表达式判断是否合法
ok, _ := regexp.MatchString("^1\\d{10}$", mobile)
if !ok {
return false
}
return true
}
注册自定义校验函数
// 注册自定义校验器
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
_ = v.RegisterValidation("mobile", validator2.ValidateMobile)
}
使用
type PasswordLoginForm struct {
Mobile string `form:"mobile" json:"mobile" binding:"required,mobile"`
Password string `form:"password" json:"password" binding:"required,min=3,max=20"`
}
自定义错误信息提示
// 注册自定义校验器
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
_ = v.RegisterValidation("mobile", validator2.ValidateMobile)
_ = v.RegisterTranslation("mobile", global.Trans, func(ut ut.Translator) error {
return ut.Add("mobile", "{0} 非法的手机号!", true) // see universal-translator for details
}, func(ut ut.Translator, fe validator.FieldError) string {
t, _ := ut.T("mobile", fe.Field())
return t
})
}