自定义验证方法:
// 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
}
注册自定义方法和错误:
需要在初始化验证器时使用文章来源地址https://www.toymoban.com/news/detail-699271.html
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"`
}
文章来源:https://www.toymoban.com/news/detail-699271.html
到了这里,关于golang validator v10 自定义验证方法和错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!