跳转至

Validator

  • https://github.com/go-playground/validator
  • gin默认的validator

Custom

if err := validate.RegisterValidation("checkMobile", checkMobile); err != nil {  
    return nil, err  
}

func checkMobile(fl validator.FieldLevel) bool {  
    reg := `^1([38][0-9]|14[579]|5[^4]|16[6]|7[1-35-8]|9[189])\d{8}$`  
    rgx := regexp.MustCompile(reg)  
    return rgx.MatchString(fl.Field().String())  
}

Translate

import (
    "github.com/go-playground/locales/zh"
    "github.com/go-playground/universal-translator"
    "github.com/go-playground/validator/v10"
    ch_translations "github.com/go-playground/validator/v10/translations/zh"
    "regexp"
    "strings"
)

func TranslateErrors(err validator.ValidationErrors, translator ut.Translator) string {
    var sb strings.Builder
    for _, value := range err.Translate(translator) {
        sb.WriteString(value + "\n")
    }
    return sb.String()
}

// 初始化Validator数据校验
func configureValidator(validate *validator.Validate) (ut.Translator, error) {
    localeZh := zh.New()
    uni := ut.New(localeZh, localeZh)
    translatorZh, _ := uni.GetTranslator(localeZh.Locale())
    if err := ch_translations.RegisterDefaultTranslations(validate, translatorZh); err != nil {
        return nil, err
    }
    return translatorZh, nil
}