自定义验证方法:
// NoChineseChars 不包含中文字符的校验器
func NoChineseChars(fl validator.FieldLevel) bool {// 获取字段值fieldValue := fl.Field().String()// 遍历字符串中的每个字符for _, char := range fieldValue {// 检查字符是否是中文字符if unicode.Is(unicode.Han, char) {return false}}return true
}
注册自定义方法和错误:
需要在初始化验证器时使用
chinese := zh.New()
uni := ut.New(chinese, chinese)
trans, _ := uni.GetTranslator("zh")
validate := validator.New()// 注册方法
err := validate.RegisterValidation("noChinese", NoChineseChars)
if err != nil {return err
}
// 注册中文字符验证器自定义错误
err = validate.RegisterTranslation("noChinese", trans, func(ut ut.Translator) error {return ut.Add("noChinese", "{0} 不能包含中文字符", true)
}, func(ut ut.Translator, fe validator.FieldError) string {t, _ := ut.T("noChinese", fe.Field())return t
})
if err != nil {return err
}
如何使用
type Test struct{UUID string `validate:"required,max=100,noChinese" json:"uuid"`
}