- Created by 郭强, last modified by jroam on Jun 16, 2021
框架校验组件内置了40+
左右常用的校验规则。
校验规则涉及到联合校验的场景时,规则中关联的参数名称会自动按照不区分大小写且忽略特殊字符的形式进行智能匹配。
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 说明:手机号 phone-loose 格式:phone 说明:手机号,只要满足 13、14、15、16、17、18、19开头的11位数字都可以通过验证 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 说明:中国邮政编码 resident-id 格式:resident-id 说明:公民身份证号码 bank-card 格式:bank-card 说明:银行号验证 qq 格式:qq 说明:腾讯QQ号码 ip 格式:ip 说明:IPv4/IPv6地址 ipv4 格式:ipv4 说明:IPv4地址 ipv6 格式:ipv6 说明:IPv6地址 mac 格式:mac 说明:MAC地址 url 格式:url 说明:URL domain 格式:domain 说明:域名 size 格式:size:size 说明:参数长度必须为:size 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
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
- 说明:参数为常用日期类型,日期之间支持的连接符号
-
或/
或.
,也支持不带连接符号的8位长度日期,格式如:2006-01-02
,2006/01/02
,2006.01.02
,20060102
,01-Nov-2018
,01.Nov.018
,01/Nov/2018
date-format
- 格式:
date-format:format
- 说明:判断日期是否为指定的日期格式,
format
参数格式为gtime
日期格式(可以包含日期及时间),格式说明参考章节:gtime模块
- 格式:
email
- 说明:EMAIL邮箱地址
phone
- 格式:
phone
- 说明:手机号
phone-loose
- 格式:
phone
- 说明:宽松的手机号验证,只要满足 13、14、15、16、17、18、19开头的11位数字都可以通过验证。
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
- 说明:中国邮政编码
resident-id
- 格式: resident-id
- 说明:公民身份证号码
bank-card
- 格式: bank-card
- 说明:银行卡号校验
- 格式:
qq
- 说明:腾讯QQ号码
ip
- 格式:
ip
- 说明:IPv4/IPv6地址
ipv4
- 格式:
ipv4
- 说明:IPv4地址
ipv6
- 格式:
ipv6
- 说明:IPv6地址
mac
- 格式:
mac
- 说明:MAC地址
url
- 格式:
url
- 说明:URL
domain
- 格式:
domain
- 说明:域名
size
- 格式:
size:size
- 说明:参数长度为
size
(长度参数为整形),注意中文一个汉字占3字节
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
Content Menu
- No labels
18 Comments
郭强
刘洋
你可以使用
min
规则,不一定要使用required
规则。如果是结构体属性的校验,请参考 数据校验-结构体校验 章节。linhaijian
required规则可以用min来代替,那required-if怎么办呢?
郭强
目前可以使用指针属性替代,后续会改进一下请求参数的校验处理。
糖水不加糖
phone-loose手机号宽松验证格式加进来方便查找.
朱文永
xx
required-without和required-without-all根本用不了,也没例子,测试过了吗?
xx
Nickname
的required-with
也不行。郭强
这个是因为
*gtime.Time
类型在required-with
规则下会失效,你试试最新的master
分支。贾君宇
能否加一个终止校验的标志,像laravel一样,出现err就停止下一个检测
郭强
你可以提个
issue
记录下。ezreal_rao
可以校验是否为数组吗?就像`laravel`中的`array`校验
郭强
目前内置规则不支持,你可以考虑自定义校验规则,甚至可以覆盖已有的内置规则,详情请参考章节:数据校验-自定义规则
jason
可以加个 exists 和 unique 验证规则吗
海亮
详细说说场景,带上举例。可以自定义规则的数据校验-自定义规则
jason
检查此字段值在数据表里是否存在或唯一性,支持自定义字段、表名、数据库名称。定义后就不用每个场景都需要手动写一遍 sql 查询并且手动校验,业务中会经常用到
郭强
你这种业务强相关的,自定义规则实现吧:数据校验-自定义规则 一次注册四处使用。也欢迎贡献通用性的规则。
吕下阿蒙
建议增加一个可以设置默认值的规则
郭强
请求输入-默认值绑定