golang validator v10 自定义验证方法和错误

自定义验证方法:

// 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"`
}

你可能感兴趣的:(golang,开发语言,后端,validator10)