Skip to content

验证规则


说明

文档列举了一些常用的验证规则,可以完成大部分场景的验证需求,更多规则请查看 GitHub

操作符说明


符号说明
,把多个验证标记隔开,注意逗号之间不能有空格
|使用多个验证标记,但是只需满足其中一个即可
-跳过该字段不验证

常用规则说明


规则说明举例
required必填Field或Struct v:"required"
omitempty空时忽略Field或Struct v:"omitempty"
len长度Field v:"len=0"
eq等于Field v:"eq=0"
gt大于Field v:"gt=0"
gte大于等于Field v:"gte=0"
lt小于Field v:"lt=0"
lte小于等于Field v:"lte=0"
eqfield同一结构体字段相等Field v:"eqfield=Field2"
nefield同一结构体字段不相等Field v:"nefield=Field2"
gtfield大于同一结构体字段Field v:"gtfield=Field2"
gtefield大于等于同一结构体字段Field v:"gtefield=Field2"
ltfield小于同一结构体字段Field v:"ltfield=Field2"
ltefield小于等于同一结构体字段Field v:"ltefield=Field2"
eqcsfield跨不同结构体字段相等Struct1.Field v:"eqcsfield=Struct2.Field2"
necsfield跨不同结构体字段不相等Struct1.Field v:"necsfield=Struct2.Field2"
gtcsfield大于跨不同结构体字段Struct1.Field v:"gtcsfield=Struct2.Field2"
gtecsfield大于等于跨不同结构体字段Struct1.Field v:"gtecsfield=Struct2.Field2"
ltcsfield小于跨不同结构体字段Struct1.Field v:"ltcsfield=Struct2.Field2"
ltecsfield小于等于跨不同结构体字段Struct1.Field v:"ltecsfield=Struct2.Field2"
min最小值(注意您的描述可能有误,应该是“最小值”而非“最大值”)Field v:"min=1"
max最大值(注意您的描述可能有误,应该是“最大值”而非“最小值”)Field v:"max=2"
structonly仅验证结构体,不验证任何结构体字段Struct v:"structonly"
nostructlevel不运行任何结构级别的验证Struct v:"nostructlevel"
dive向下延伸验证,多层向下需要多个dive标记[][]string v:"gt=0,dive,len=1,dive,required"
dive Keys & EndKeys与dive同时使用,用于对map对象的键的和值的验证,keys为键,endkeys为值map[string]string v:"gt=0,dive,keys,eq=1|eq=2,endkeys,required"
required_with其他字段其中一个不为空且当前字段不为空Field v:"required_with=Field1 Field2"
required_with_all其他所有字段不为空且当前字段不为空Field v:"required_with_all=Field1 Field2"
required_without其他字段其中一个为空且当前字段不为空Field v:"required_without=Field1 Field2"
required_without_all其他所有字段为空且当前字段不为空Field v:"required_without_all=Field1 Field2"
isdefault是默认值Field v:"isdefault=0"
oneof其中之一Field v:"oneof=5 7 9"
containsfield字段包含另一个字段Field v:"containsfield=Field2"
excludesfield字段不包含另一个字段Field v:"excludesfield=Field2"
unique是否唯一,通常用于切片或结构体Field v:"unique"
alphanum字符串值是否只包含 ASCII 字母数字字符Field v:"alphanum"
alphaunicode字符串值是否只包含 unicode 字符Field v:"alphaunicode"
alphanumunicode字符串值是否只包含 unicode 字母数字字符Field v:"alphanumunicode"
numeric字符串值是否包含基本的数值Field v:"numeric"
hexadecimal字符串值是否包含有效的十六进制Field v:"hexadecimal"
hexcolor字符串值是否包含有效的十六进制颜色Field v:"hexcolor"
lowercase字符串值是否只包含小写字符Field v:"lowercase"
uppercase字符串值是否只包含大写字符Field v:"uppercase"
email字符串值包含一个有效的电子邮件Field v:"email"
json字符串值是否为有效的 JSONField v:"json"
file字符串值是否包含有效的文件路径,以及该文件是否存在于计算机上Field v:"file"
url字符串值是否包含有效的 urlField v:"url"
uri字符串值是否包含有效的 uriField v:"uri"
base64字符串值是否包含有效的 base64值Field v:"base64"
contains字符串值包含子字符串值Field v:"contains=@"
containsany字符串值包含子字符串值中的任何字符Field v:"containsany=abc"
containsrune字符串值包含提供的特殊符号值Field v:"containsrune=☢"
excludes字符串值不包含子字符串值Field v:"excludes=@"
excludesall字符串值不包含任何子字符串值Field v:"excludesall=abc"
excludesrune字符串值不包含提供的特殊符号值Field v:"excludesrune=☢"
startswith字符串以提供的字符串值开始Field v:"startswith=abc"
endswith字符串以提供的字符串值结束Field v:"endswith=abc"
ip字符串值是否包含有效的 IP 地址Field v:"ip"
ipv4字符串值是否包含有效的 ipv4地址Field v:"ipv4"
datetime字符串值是否包含有效的 日期Field v:"datetime"

备案号:冀ICP备20015584号-5