代码拉取完成,页面将自动刷新
同步操作将从 goflyfox/gfstudy 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
gvalid
模块实现了非常强大的数据校验功能,封装了40种
常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验、支持struct tag
规则及提示信息绑定等特性,是目前功能最强大的Go
数据校验模块。
校验规则:
required 格式:required 说明:必需参数
required-if 格式:required-if:field,value,... 说明:必需参数(当任意所给定字段值与所给值相等时,即:当field字段的值为value时,当前验证字段为必须参数)
required-unless 格式:required-unless:field,value,... 说明:必需参数(当所给定字段值与所给值都不相等时,即:当field字段的值不为value时,当前验证字段为必须参数)
required-with 格式:required-with:field1,field2,... 说明:必需参数(当所给定任意字段值不为空时)
required-with-all 格式:required-with-all:field1,field2,... 说明:必须参数(当所给定所有字段值都不为空时)
required-without 格式:required-without:field1,field2,... 说明:必需参数(当所给定任意字段值为空时)
required-without-all 格式:required-without-all:field1,field2,...说明:必须参数(当所给定所有字段值都为空时)
date 格式:date 说明:参数为常用日期类型,格式:2006-01-02, 20060102, 2006.01.02
date-format 格式:date-format:format 说明:判断日期是否为指定的日期格式,format为Go日期格式(可以包含时间)
email 格式:email 说明:EMAIL邮箱地址
phone 格式:phone 说明:手机号
telephone 格式:telephone 说明:国内座机电话号码,"XXXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"、"XXXXXXXX"
passport 格式:passport 说明:通用帐号规则(字母开头,只能包含字母、数字和下划线,长度在6~18之间)
password 格式:password 说明:通用密码(任意可见字符,长度在6~18之间)
password2 格式:password2 说明:中等强度密码(在弱密码的基础上,必须包含大小写字母和数字)
password3 格式:password3 说明:强等强度密码(在弱密码的基础上,必须包含大小写字母、数字和特殊字符)
postcode 格式:postcode 说明:中国邮政编码
id-number 格式:id-number 说明:公民身份证号码
luhn 格式:luhn 说明:银行号验证
qq 格式:qq 说明:腾讯QQ号码
ip 格式:ip 说明:IPv4/IPv6地址
ipv4 格式:ipv4 说明:IPv4地址
ipv6 格式:ipv6 说明:IPv6地址
mac 格式:mac 说明:MAC地址
url 格式:url 说明:URL
domain 格式:domain 说明:域名
length 格式:length:min,max 说明:参数长度为min到max(长度参数为整形),注意中文一个汉字占3字节
min-length 格式:min-length:min 说明:参数长度最小为min(长度参数为整形),注意中文一个汉字占3字节
max-length 格式:max-length:max 说明:参数长度最大为max(长度参数为整形),注意中文一个汉字占3字节
between 格式:between:min,max 说明:参数大小为min到max(支持整形和浮点类型参数)
min 格式:min:min 说明:参数最小为min(支持整形和浮点类型参数)
max 格式:max:max 说明:参数最大为max(支持整形和浮点类型参数)
json 格式:json 说明:判断数据格式为JSON
integer 格式:integer 说明:整数
float 格式:float 说明:浮点数
boolean 格式:boolean 说明:布尔值(1,true,on,yes:true | 0,false,off,no,"":false)
same 格式:same:field 说明:参数值必需与field参数的值相同
different 格式:different:field 说明:参数值不能与field参数的值相同
in 格式:in:value1,value2,... 说明:参数值应该在value1,value2,...中(字符串匹配)
not-in 格式:not-in:value1,value2,... 说明:参数值不应该在value1,value2,...中(字符串匹配)
regex 格式:regex:pattern 说明:参数值应当满足正则匹配规则pattern
Check
方法用于单条数据校验,比较简单;CheckMap
方法用于多条数据校验,校验的主体变量为map
类型;CheckStruct
方法用于多条数据校验,校验的主体变量为结构体对象类型;Check*
方法只有在返回nil
的情况下,表示数据校验成功,否则返回校验出错的错误信息对象指针*Error
;校验结果为一个Error
对象指针。以下为对象方法:
FirstItem
在有多个键名/属性校验错误的时候,用以获取出错的第一个键名,以及其对应的出错规则和错误信息;其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的;FirstRule
会返回FirstItem
中得第一条出错的规则及错误信息;FirstString
会返回FirstRule
中得第一条规则错误信息;Map
会返回FirstItem
中得出错自规则及对应错误信息map
;Maps
会返回所有的出错键名及对应的出错规则及对应的错误信息(map[string]map[string]string
);String
会返回所有的错误信息,构成一条字符串返回,多个规则错误信息之间以;
符号连接;Strings
会返回所有的错误信息,构成[]string
类型返回;package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gvalid"
"testing"
)
// 单条校验
func TestCheck(t *testing.T) {
rule := "length:6,16"
if m := gvalid.Check("12345", rule, nil); m != nil {
t.Log(m)
} else {
t.Log("check ok!")
}
}
// map校验
func TestCheckMap(t *testing.T) {
params := map[string]interface{}{
"passport": "john",
"password": "123456",
"password2": "1234567",
}
rules := map[string]string{
"passport": "required|length:6,16",
"password": "required|length:6,16|same:password2",
"password2": "required|length:6,16",
}
msgs := map[string]interface{}{
"passport": "账号不能为空|账号长度应当在:min到:max之间",
"password": map[string]string{
"required": "密码不能为空",
"same": "两次密码输入不相等",
},
}
if e := gvalid.CheckMap(params, rules, msgs); e != nil {
g.Dump(e.Map())
g.Dump(e.Maps())
} else {
t.Log("check ok!")
}
}
// 对象校验
func TestCheckStruct(t *testing.T) {
type User struct {
Uid int `gvalid:"uid @integer|min:1#用户UID不能为空"`
Name string `gvalid:"name @required|length:6,30#请输入用户名称|用户名称长度非法"`
}
user := &User{
Name: "john",
}
// 使用结构体定义的校验规则和错误提示进行校验
g.Dump(gvalid.CheckStruct(user, nil).Map())
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。