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