直接使用
package main import ( "github.com/sohaha/zlsgo/zlog" "github.com/sohaha/zlsgo/zvalid" ) func main() { // 需要验证的数据 data := "我是需要验证的数据,我的作用是做用户名" // 开始验证数据,不能为空,必须包含字母 name, err := zvalid.Text(data, "用户名").Required().HasNumber().HasLetter().String() if err != nil { zlog.Debug("验证失败", err) } data = "我是需要验证的数据,我的作用是做用户名,我有字母 A" name, err = zvalid.Text(data, "用户名").Required().HasLetter().String() zlog.Debug("用户名是:", name) // 初始化一个对象,并绑定需要验证的字符串 // zvalid.New().Verifi("username","用户名").String() // ... 更多用法 }
HTTP 服务器内使用
r.GET("/demo", func(c *znet.Context) { // 批量验证 var data struct { Site string `json:"site"` Url string } // 创建一个共用不能为空规则做默认规则器,非必须 rule := c.ValidRule().Required() err := zvalid.Batch( // 验证数据 c.Valid(规则器, "表单 key,支持 GET 与 POST 的数据 key", "字段名") zvalid.BatchVar(&data.Site, c.Valid(rule, "site", "站点")), zvalid.BatchVar(&data.Site, c.Valid(rule, "url", "URL").Customize(func(rawValue string, err error) (newValue string, newErr error) { // 这里自定义验证数据或修改数据 // ... return })), ) c.Log.Info(err, data) // 绑定并且验证数据 rule := c.ValidRule().Required() err := c.BindValid(&data,map[string]zvalid.Engine{ "site":rule.SetAlias("站点"), }) // 或直接验证字段 site, err := c.Valid(rule, "site", "站点").String() c.Log.Info(site, err) err = c.ValidForm(c.ValidRule().Required(), "url", "URL").Error() c.Log.Info(err) })
数据验证
检查数据是否指定类型
注意该函数不检查空值所以如果是必填请先添加
.Required("不能为空")
// 示例:用户名必须是英文字母 zvalid.Text(data, "用户名").Required("不能空值").IsLetter("这里可以自定义错误信息,如:必须是英文字母").String() // 必须是布尔值 .IsBool() // 必须是小写字母 .IsLower() // 必须是大写字母 .IsUpper() // 必须是字母 .IsLetter() // 必须是整数 .IsNumber() // 必须是小写字母或数字 .IsLowerOrDigit() // 必须是大写字母或数字 .IsUpperOrDigit() // 必须是字母或数字 .IsLetterOrDigit() // 必须是中文 .IsChinese() // 必须是手机号码 .IsMobile() // 必须是电子邮箱 .IsMail() // 必须是 URL .IsURL() // 必须是 IP .IsIP() // 必须是 JSON .IsJSON() // 必须是身份证号码 .IsChineseIDNumber() // 长度不能小于指定长度 .MinLength(min int) // 长度不能小于指定 UTF8 编码长度 .MinUTF8Length(min int) // 长度不能大于指定长度 .MaxLength(max int) // 长度不能大于指定 UTF8 编码长度 .MaxUTF8Length(max int) // 最小数字 .MinInt(min int) // 最大数字 .MaxInt(max int) // 最小浮点数 .MinFloat(min float64) // 最大浮点数 .MaxFloat(max float64) // 只允许的指定字符串 .EnumString(slice []string) // 只允许的指定数字 .EnumInt(i []int) // 只允许的指定浮点数 .EnumFloat64(f []float64)
检查数据是否包含指定数据
// 示例:用户名必须是英文字母 zvalid.Text(data, "用户密码").StrongPassword("这里可以自定义错误信息,如:必须包含大小英文字母+符号并且长度为 6-20 位").String() // 必须包含字母 .HasLetter() // 必须包含小写字母 .HasLower() // 必须包含大写字母 .HasUpper() // 必须包含数字 .HasNumber() // 必须包含符号 .HasSymbol() // 必须包含特定的字符串 .HasString(str string) // 必须包含指定前缀 .HasPrefix(str string) // 必须包含指定后缀 .HasSuffix(str string) // 6-20 位字符 .Password() // 必须包含大小英文字母+符号并且长度为 6-20 位 .StrongPassword() // 正则匹配 .RegexMatch(pattern string)
自定义处理
.Customize(func(rawValue string, err error) (newValue string, newErr error) { newValue = rawValue newErr = err return })
数据处理
// 移除全部空格 .RemoveSpace()
结果集
// 赋值验证对象 valid := zvalid.Text(data, "用户名").Required("不能空值") // 获取字符串 username, err := valid.String() // 只获取结果字符串 username := valid.Value() // 获取布尔值 b, err := valid.Bool() // 获取整数 i, err := valid.Int() // 获取整数 i, err := valid.Int() // 获取浮点值 i, err := valid.Float64() // 只获取是否验证通过 ok := valid.Ok() // 只获取验证失败信息 err := valid.Error()