Skip to content
This repository has been archived by the owner on Aug 21, 2022. It is now read-only.

issue9/validation

Repository files navigation

validation

Go Go Report Card License Go version codecov PkgGoDev

数据验证

包含了以下类型的数据验证:

  • GB11643 身份证验证和分析;
  • GB32100 统一信用代码验证和分析;
  • 银行卡卡号验证;
  • ISBN 验证;
  • IPv4/IPv6 验证;
  • 中国区手机/电话号码验证;
  • 域名验证;
  • Email 验证;
import (
    "github.com/issue9/validation"
    "github.com/issue9/validation/validator"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
)

type Object {
    Age int
    Name string
}

o := &Object{}

p := message.NewPrinter(language.MustParse("cmn-Hans"))
v := validation.New(validation.ContinueAtError, p)
age := validation.NewRule(validator.Min(18), "不能小于 18")
required :=validation.NewRule(validator.Required(false), "不能为空")
messages := v.NewField(&o.Age, "age", age).
    NewField(&o.Name, "name", required).
    Messages()

本地化

本地化采用 golang.org/x/text 包

import (
    "github.com/issue9/validation"
    "github.com/issue9/validation/validator"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
    "golang.org/x/text/message/catalog"
)

type Object {
    Age int
    Name string
}

builder := catalog.NewBuilder()
builder.SetString(language.SimplifiedChinese, "lang", "chn")
builder.SetString(language.TraditionalChinese, "lang", "cht")

o := &Object{}

p := message.NewPrinter(language.SimplifiedChinese, message.Catalog(builder))
v := validation.New(validation.ContinueAtError, p)

age := validation.NewRule(validator.Min(18), "lang")// 根据 p 的不同,会输出不同内容
required :=validation.NewRule(validator.Required(false), "不能为空")
messages := v.NewField(&o.Age, "age", age). 
    NewField(&o.Name, "name", required).
    Messages()

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。