参考地址: 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})}
