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()
// ... 更多用法
}
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()**