框架校验组件内置了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
  • 说明: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(长度参数为整形),注意中文一个汉字占3字节

length

  • 格式: length:min,max
  • 说明:参数长度minmax(长度参数为整形),注意中文一个汉字占3字节

min-length

  • 格式: min-length:min
  • 说明:参数长度最小为min(长度参数为整形),注意中文一个汉字占3字节

max-length

  • 格式: max-length:max
  • 说明:参数长度最大为max(长度参数为整形),注意中文一个汉字占3字节

between

  • 格式: between:min,max
  • 说明:参数大小minmax(支持整形和浮点类型参数)

min

  • 格式: min:min
  • 说明:参数大小最小为min(支持整形和浮点类型参数)

max

  • 格式: max:max
  • 说明:参数大小最大为max(支持整形和浮点类型参数)

json

  • 格式: json
  • 说明:判断数据格式为JSON

integer

  • 格式: integer
  • 说明:整数

float

  • 格式: float
  • 说明:浮点数

boolean

  • 格式: boolean
  • 说明:布尔值(1,true,on,yestrue | 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

  1. 刘洋 

    int 类型的数据怎么判断为空,int默认为0

    你可以使用min规则,不一定要使用required规则。如果是结构体属性的校验,请参考 数据校验-结构体校验 章节。

    1. required规则可以用min来代替,那required-if怎么办呢?

      1. 目前可以使用指针属性替代,后续会改进一下请求参数的校验处理。

  2. phone-loose手机号宽松验证格式加进来方便查找.

  3. Addtime *gtime.Time `v:"required|date#时间不能为空|时间格式错误"`

    date校验会报如下错误:
    runtime error: invalid memory address or nil pointer dereference

    其他的校验 email phone 等都正常
  4. xx

    required-without和required-without-all根本用不了,也没例子,测试过了吗?

    1. xx

      type UserApiSearch struct {
          Uid       int64       `json:"uid"`                                  // 用户ID
          Nickname  string      `json:"nickname" v:"required-with:Uid"`       // 昵称
          StartTime *gtime.Time `json:"start_time" v:"required-with:EndTime"` // 开始时间
          EndTime   *gtime.Time `json:"end_time" v:"required-with:StartTime"` // 结束时间
      }

      Nicknamerequired-with也不行。

      1. 这个是因为*gtime.Time类型在required-with规则下会失效,你试试最新的master分支。

  5. 能否加一个终止校验的标志,像laravel一样,出现err就停止下一个检测

    1. 你可以提个issue记录下。

  6. 可以校验是否为数组吗?就像`laravel`中的`array`校验

    1. 目前内置规则不支持,你可以考虑自定义校验规则,甚至可以覆盖已有的内置规则,详情请参考章节:数据校验-自定义规则

  7. 可以加个 exists 和 unique 验证规则吗

    1. 详细说说场景,带上举例。可以自定义规则的数据校验-自定义规则

      1. 检查此字段值在数据表里是否存在或唯一性,支持自定义字段、表名、数据库名称。定义后就不用每个场景都需要手动写一遍 sql 查询并且手动校验,业务中会经常用到

        1. 你这种业务强相关的,自定义规则实现吧:数据校验-自定义规则 一次注册四处使用。也欢迎贡献通用性的规则。

  8. 建议增加一个可以设置默认值的规则