Go语言学习 之 Validate验证器用法速查

刚从PHP转过来写了几天时间的go,感觉其最大的特点就是强类型。不仅仅是对变量类型的限制很强,其对每个结构体定义的字段类型限制也很强,这就会导致刚入门go的同学很不习惯。比如限制一个字段的值为大于10的int类型,而你传了个9就会报错。当然这样也有一个好处就是对于参数校验不用另外写条件来判断了,大大简化了入参校验。总结一下常用的验证器写法以便后续查看。

Go的内置验证器有以下几大类别:

  • (为空)必填验证
  • 类型验证
  • 大小、长度验证
  • 字段值比较验证
  • 文件验证
  • 日期验证
  • 字符串检查验证
  • 其他验证

驼峰式的验证器名称现在都添加了下划线式的别名。因此 endsWith 也可以写为 ends_with

验证器/别名描述信息
required字段为必填项,值不能为空
required_if/requiredIfrequired_if:anotherfield,value,... 如果其它字段 anotherField 为任一值 value ,则此验证字段必须存在且不为空。
required_unlessrequired_unless:anotherfield,value,... 如果其它字段 anotherField 不等于任一值 value ,则此验证字段必须存在且不为空。
required_with/requiredWithrequired_with:foo,bar,... 在其他任一指定字段出现时,验证的字段才必须存在且不为空
required_with_allrequired_with_all:foo,bar,... 只有在其他指定字段全部出现时,验证的字段才必须存在且不为空
required_withoutrequired_without:foo,bar,... 在其他指定任一字段不出现时,验证的字段才必须存在且不为空
required_without_allrequired_without_all:foo,bar,... 只有在其他指定字段全部不出现时,验证的字段才必须存在且不为空
-/safe标记当前字段是安全的,无需验证
int/integer/isInt检查值是 intX uintX 类型,同时支持大小检查 "int" "int:2" "int:2,12"
uint/isUint检查值是 uintX 类型(value >= 0)
bool/isBool检查值是布尔字符串(true: "1", "on", "yes", "true", false: "0", "off", "no", "false").
string/isString检查值是字符串类型,同时支持长度检查 "string" "string:2" "string:2,12"
float/isFloat检查值是 float(floatX) 类型
slice/isSlice检查值是 slice 类型([]intX []uintX []byte []string 等).
in/enum检查值()是否在给定的枚举列表([]string[]intX[]uintX)中
not_in/notIn检查值不是在给定的枚举列表中
contains检查输入值(string array/slice map)是否包含给定的值
not_contains/notContains检查输入值(string array/slice map)是否不包含给定值
string_contains/stringContains检查输入的 string 值是否不包含给定sub-string值
starts_with/startsWith检查输入的 string 值是否以给定sub-string开始
ends_with/endsWith检查输入的 string 值是否以给定sub-string结束
range/between检查值是否为数字且在给定范围内
max/lte检查输入值小于或等于给定值
min/gte检查输入值大于或等于给定值(for intX uintX floatX)
eq/equal/isEqual检查输入值是否等于给定值
ne/notEq/notEqual检查输入值是否不等于给定值
lt/lessThan检查值小于给定大小(use for intX uintX floatX)
gt/greaterThan检查值大于给定大小(use for intX uintX floatX)
intEq/intEqual检查值为int且等于给定值
len/length检查值长度等于给定大小(use for string array slice map).
minLen/minLength检查值的最小长度是给定大小
maxLen/maxLength检查值的最大长度是给定大小
email/isEmail检查值是Email地址字符串
regex/regexp检查该值是否可以通过正则验证
arr/array/isArray检查值是数组array类型
map/isMap检查值是 map 类型
strings/isStrings检查值是字符串切片类型([]string)
ints/isInts检查值是int slice类型(only allow []int)
eq_field/eqField检查字段值是否等于另一个字段的值
ne_field/neField检查字段值是否不等于另一个字段的值
gte_field/gtField检查字段值是否大于另一个字段的值
gt_field/gteField检查字段值是否大于或等于另一个字段的值
lt_field/ltField检查字段值是否小于另一个字段的值
lte_field/lteField检查字段值是否小于或等于另一个字段的值
file/isFile验证是否是上传的文件
image/isImage验证是否是上传的图片文件,支持后缀检查
mime/mimeType/inMimeTypes验证是否是上传的文件,并且在指定的MIME类型中
date/isDate检查字段值是否为日期字符串。(只支持几种常用的格式) eg 2018-10-25
gtDate/afterDate检查输入值是否大于给定的日期字符串
ltDate/beforeDate检查输入值是否小于给定的日期字符串
gteDate/afterOrEqualDate检查输入值是否大于或等于给定的日期字符串
lteDate/beforeOrEqualDate检查输入值是否小于或等于给定的日期字符串
hasWhitespace检查字符串值是否有空格
ascii/ASCII/isASCII检查值是ASCII字符串
alpha/isAlpha验证值是否仅包含字母字符
alphaNum/isAlphaNum验证是否仅包含字母、数字
alphaDash/isAlphaDash验证是否仅包含字母、数字、破折号( - )以及下划线( _ )
multiByte/isMultiByte检查值是多字节字符串
base64/isBase64检查值是Base64字符串
dnsName/DNSName/isDNSName检查值是DNS名称字符串
dataURI/isDataURICheck value is DataURI string.
empty/isEmpty检查值是否为空
hexColor/isHexColor检查值是16进制的颜色字符串
hexadecimal/isHexadecimal检查值是十六进制字符串
json/JSON/isJSON检查值是JSON字符串。
lat/latitude/isLatitude检查值是纬度坐标
lon/longitude/isLongitude检查值是经度坐标
mac/isMAC检查值是MAC字符串
num/number/isNumber检查值是数字字符串. >= 0
cnMobile/isCnMobile检查值是中国11位手机号码字符串
printableASCII/isPrintableASCIICheck value is PrintableASCII string.
rgbColor/RGBColor/isRGBColor检查值是RGB颜色字符串
fullUrl/isFullURL检查值是完整的URL字符串(必须以http,https开始的URL).
url/URL/isURL检查值是URL字符串
ip/IP/isIP检查值是IP(v4或v6)字符串
ipv4/isIPv4检查值是IPv4字符串
ipv6/isIPv6检查值是IPv6字符串
CIDR/isCIDR检查值是 CIDR 字符串
CIDRv4/isCIDRv4检查值是 CIDR v4 字符串
CIDRv6/isCIDRv6检查值是 CIDR v6 字符串
uuid/isUUID检查值是UUID字符串
uuid3/isUUID3检查值是UUID3字符串
uuid4/isUUID4检查值是UUID4字符串
uuid5/isUUID5检查值是UUID5字符串
filePath/isFilePath检查值是一个存在的文件路径
unixPath/isUnixPath检查值是Unix Path字符串
winPath/isWinPath检查值是Windows路径字符串
isbn10/ISBN10/isISBN10检查值是ISBN10字符串
isbn13/ISBN13/isISBN13检查值是ISBN13字符串

提示

  • intX 包含: intint8int16int32int64
  • uintX 包含: uintuint8uint16uint32uint64
  • floatX 包含: float32float64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值