直接使用

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()**