数据验证
包含了以下类型的数据验证:
- 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()