参考地址: https://github.com/go-playground/validator/blob/master/_examples/translations/main.go

编写校验函数

  1. // ValidateMobile 自定义手机号校验器
  2. func ValidateMobile(fl validator.FieldLevel) bool {
  3. mobile := fl.Field().String()
  4. // 使用正则表达式判断是否合法
  5. ok, _ := regexp.MatchString("^1\\d{10}$", mobile)
  6. if !ok {
  7. return false
  8. }
  9. return true
  10. }

注册自定义校验函数

  1. // 注册自定义校验器
  2. if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
  3. _ = v.RegisterValidation("mobile", validator2.ValidateMobile)
  4. }

使用

  1. type PasswordLoginForm struct {
  2. Mobile string `form:"mobile" json:"mobile" binding:"required,mobile"`
  3. Password string `form:"password" json:"password" binding:"required,min=3,max=20"`
  4. }

自定义错误信息提示

  1. // 注册自定义校验器
  2. if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
  3. _ = v.RegisterValidation("mobile", validator2.ValidateMobile)
  4. _ = v.RegisterTranslation("mobile", global.Trans, func(ut ut.Translator) error {
  5. return ut.Add("mobile", "{0} 非法的手机号!", true) // see universal-translator for details
  6. }, func(ut ut.Translator, fe validator.FieldError) string {
  7. t, _ := ut.T("mobile", fe.Field())
  8. return t
  9. })
  10. }