Golang验证库go-playground/validator验证规则
一、验证规则
标记之间特殊符号说明
逗号( , ):把多个验证标记隔开。注意:隔开逗号之间不能有空格, validate:"lt=0,gt=100",逗号那里不能有空格,否则panic 横线( - ):跳过该字段不验证 竖线( | ):使用多个验证标记,但是只需满足其中一个即可 required:表示该字段值必输设置,且不能为默认值 omitempty:如果字段未设置,则忽略它
范围比较验证
doc: https://github.com/go-playground/validator/blob/master/README.md#comparisons
范围验证: 切片、数组和map、字符串,验证其长度;数值,验证大小范围
lte:小于等于参数值,validate:"lte=3" (小于等于3) gte:大于等于参数值,validate:"lte=0,gte=120" (大于等于0小于等于120) lt:小于参数值,validate:"lt=3" (小于3) gt:大于参数值,validate:"lt=0,gt=120" (大于0小于120) len:等于参数值,validate:"len=2" max:大于等于参数值,validate:"max=2" (大于等于2) min:小于等于参数值,validate:"min=2,max=10" (大于等于2小于等于10) ne:不等于,validate:"ne=2" (不等于2) oneof:只能是列举出的值其中一个,这些值必须是数值或字符串,以空格分隔,如果字符串中有空格,将字符串用单引号包围,validate:"oneof=red green"
例子:
type User struct { Name string `json:"name" validate:"min=0,max=35"` Age unit8 `json:"age" validate:"lte=0,gte=90"` }
更多功能请参看文档 validator comparisons doc
字符串验证
contains:包含参数子串,validate:"contains=tom" (字段的字符串值包含tom) excludes:包含参数子串,validate:"excludes=tom" (字段的字符串值不包含tom) startswith:以参数子串为前缀,validate:"startswith=golang" endswith:以参数子串为后缀,validate:"startswith=world"
例子:
type User struct { Name string `validate:"contains=tom"` Age int `validate:"min=1"` }
更多功能请参看文档 validator strings doc
字段验证
eqcsfield:跨不同结构体字段验证,比如说 Struct1 Filed1,与结构体Struct2 Field2相等, type Struct1 struct { Field1 string `validate:eqcsfield=Struct2.Field2` Struct2 struct { Field2 string } } necsfield:跨不同结构体字段不相等 eqfield:同一结构体字段验证相等,最常见的就是输入2次密码验证 type User struct { Name string `validate:"lte=4"` Age int `validate:"min=20"` Password string `validate:"min=10"` Password2 string `validate:"eqfield=Password"` } nefield:同一结构体字段验证不相等 type User struct { Name string `validate:"lte=4"` Age int `validate:"min=20"` Password string `validate:"min=10,nefield=Name"` } gtefield:大于等于同一结构体字段,validate:"gtefiled=Field2" ltefield:小于等于同一结构体字段
更多功能请参看文档:validator Fields DOC
网络验证
ip:字段值是否包含有效的IP地址,validate:"ip" ipv4:字段值是否包含有效的ipv4地址,validate:"ipv4" ipv6:字段值是否包含有效的ipv6地址,validate:"ipv6" uri:字段值是否包含有效的uri,validate:"uri" url:字段值是否包含有效的uri,validate:"url"