多个验证器之间用英文输入法下的逗号(,)隔开,并且是按照验证器的顺序执行的
如果希望在参数中包含逗号(即excludesall =,),则需要使用UTF-8十六进制表示形式0x2C
validate:"excludesall=0x2C"
1.- 忽略字段,如:binding:"-"
2.required
: 必填字段,如:binding:"required"
3.min
最小长度,如:binding:"min=10"
4.max
最大长度,如:binding:"max=10"
5.| 或,如:binding:"rgb|rgba"
6.structonly
如果有嵌套,可以决定只验证结构体上的,binding:"structonly"
7.Exists
8.omitempty
省略空,如果为空,则不会继续验证该字段上其他的规则,只有不为空才会继续验证其他的,如max等
9.dive
嵌套验证,在一个结构体中嵌套另一个结构体,要验证另一个结构体的字段,
// 结构体嵌套验证,User结构体Address字段必须写dive,才能验证Address的每一个字段
type User struct {
Username string `form:"username" json:"username" binding:"required"`
Password string `form:"password" json:"password" binding:"required"`
Email string `form:"email" json:"email" binding:"required,email"`
Address []Address `form:"address" json:"address" binding:"required,dive"` // 这个dive是必须要加的,不然无法验证Address的结构体
}
type Address struct {
Street string `form:"street" json:"street" binding:"required"`
City string `form:"city" json:"city" binding:"required"`
Phone string `form:"phone" json:"phone" binding:"required,numeric,len=11"`
}
1.name [][]string `binding:"gt=0,dive,len=1,dive,required"`
// gt = 0将应用于[]
// len = 1将应用于[] string
//必填项将应用于字符串
2.name [][]string `binding:"gt=0,dive,dive,required"`
// gt = 0 将应用于[]
// []string 将保留验证
//必填项将应用于字符串
10.len
长度,如:binding:"len=10"
11.eq
等于,如:binding:"eq=10"
12.ne
不等于,如:binding:"ne=10"
13.gt
大于,如:binding:"gt=10"
14.gte
大于等于,如:binding:"gte=10"
15.lt
小于,如:binding:"lt=10"
16.lte
小于等于,如:binding:"lte=10"
<注>:gt、gte、lt、lte
等都可以用于时间的比较,后面不需要跟值,直接binding:"gt"
,表示大于当前utc时间
17.eqfield
等于其他字段的值,如:Password string binding:"eqfield=ConfirmPassword"
18.nefield
不等于其他字段的值,
19.eqcsfield
类似eqfield
,它会验证相对于顶层结构提供的字段,
如:eqcsfield = InnerStructField.Field)
20.necsfield
21.gtfield
大于其他字段的值
22.gtefield
23.gtcsfield
24.gtecsfield
25.ltfield
小于其他字段的值
26.ltefield
27.ltcsfield
28.ltecsfield
29.alpha
字符串值仅包含字母字符
30.alphanum
字符串值仅包含字母数字字符
31.numeric
字符串值包含基本数字值。基本不包括指数等…
32.hexadecimal
字符串值包含有效的十六进制
33.hexcolor
验证字符串值包含有效的十六进制颜色,包括井号(#)
34.rgb
字符串值包含有效的rgb颜色
35.rgba
字符串值包含有效的rgba颜色
36.HSL
字符串值包含有效的hsl颜色
37.hsla
字符串值包含有效的hsla颜色
38.email
字符串值包含有效的电子邮件
39.url
字符串值包含有效的网址,必须包含http://等
40.uri
字符串值包含有效的uri。它将接受golang请求uri接受的任何uri
41.base64
字符串值包含有效的base64值
42.contains
字符串值包含子字符串值,contains=@
43.containsany
包含所有,containsany =!@#?
44.containsrune
字符串值包含提供的符号 containsrune = @
45.excludes
字符串值不包含子字符串值,excludes = @
46.excludeall
排除所有
47.excluderune
字符串值不包含提供的符号,excluderune = @
48.isbn
国际标准书号,验证字符串值包含有效的isbn10或isbn13值
。
49.isbn10
国际标准书号10
, 验证字符串值包含有效的isbn10值
。
50.isbn13
国际标准书号13
,字符串值包含有效的isbn13
值。
51.uuid
字符串值包含有效的UUID
。
52.uuid3
字符串值包含有效的版本3 UUID
53.uuid4
字符串值包含有效的版本5 UUID
。
54.uuid5
字符串值包含有效的版本5 UUID
。
55.ascii
字符串值仅包含ASCII字符
。注意:如果字符串为空,则验证为true
。
56.asciiprint
字符串值仅包含可打印的ASCII
字符。注意:如果字符串为空,则验证为true
。
57.multibyte
字符串值包含一个或多个多字节字符。注意:如果字符串为空,则验证为true
。
58.datauri
字符串值包含有效的DataURI
。注意:这还将验证数据部分是有效的base64
59.latitude
纬度,字符串值包含有效的纬度
60.longitude
经度,字符串值包含有效的经度。
61.ssn
字符串值包含有效的美国社会安全号码
62.ip
字符串值包含有效的IP地址
63.ipv4
字符串值包含有效的v4 IP地址。
64.ipv6
字符串值包含有效的v6 IP地址。
65.cidr
字符串值包含有效的CIDR地址。
66.cidrv4
字符串值包含有效的CIDR地址。
67.cidrv6
字符串值包含有效的v6 CIDR地址。
68.tcp_addr
字符串值包含有效的可解析TCP地址。