## 验证规则
* `alpha`验证的字段必须完全是字母字符。
* `alpha_dash`正在验证的字段可能包含字母数字字符以及破折号和下划线。
* `alpha_space`正在验证的字段可能包含字母数字字符以及破折号、下划线和空格。
* `alpha_num`验证中的字段必须完全是字母数字字符。
* `between:numeric,numeric`验证字段检查字符长度/数组长度、切片、映射/两个整数或浮点数之间的范围等。
* `numeric`验证的字段必须完全是数字字符。
* `numeric_between:numeric,numeric`验证的字段必须是范围之间的数值。例如:`numeric_between:18,65`可能包含数值,如`35`,`55`。您还可以传递浮点值进行检查。此外,可以省略两个边界以创建无界最小值(例如:`numeric_between:,65`)或无界最大值(例如:`numeric_between:-1,`)。
* `bool`验证中的字段必须能够转换为布尔值。接受的输入是`true, false, 1, 0, "1" and "0"`.
* `credit_card`验证字段必须具有有效的信用卡号。接受的卡是`Visa, MasterCard, American Express, Diners Club, Discover and JCB card`
* `coordinate`验证中的字段必须具有有效坐标值。
* `css_color`验证字段的值必须为有效的 CSS 颜色。接受的颜色`hex, rgb, rgba, hsl, hsla`就像`#909, #00aaff, rgb(255,122,122)`
* `date`验证字段必须具有格式为 yyyy-mm-dd 或 yyyy/mm/dd 的有效日期。
* `date:dd-mm-yyyy`验证中的字段必须具有格式为 dd-mm-yyyy 的有效日期。
* `digits:int`验证的字段必须是数字,并且必须具有精确的值长度。
* `digits_between:int,int`验证的字段必须是数字,并且长度必须在范围之间。例如:`digits_between:3,5`可能包含数字,如`2323`,`12435`
* `in:foo,bar`验证中的字段必须具有其中一个值。例如:`in:admin,manager,user`必须包含值(管理员或经理或用户)
* `not_in:foo,bar`验证中的字段必须有一个值,除了 foo,bar。例如:`not_in:admin,manager,user`不得包含值(管理员或经理或用户)
* `email`验证中的字段必须具有有效的电子邮件。
* `float`验证中的字段必须具有有效的浮点数。
* `mac_address`验证字段必须是有效的 Mac 地址。
* `min:numeric`验证字段必须具有字符串的最小字符长度、切片/映射的项目长度、整数或浮点数的值。例如:`min:3`可能包含字符的最小长度为 3 like`"john", "jane", "jane321"`但不是`"mr", "xy"`
* `max:numeric`验证字段必须具有字符串的最大字符长度、切片/映射的项目长度、整数或浮点数的值。例如:`max:6`可能包含字符的最大长度为 6 个like`"john doe", "jane doe"`但不是`"john", "jane"`
* `len:numeric`验证字段必须具有精确的字符长度、精确的整数或浮点值、精确的映射/切片大小。例如:`len:4`可能包含精确长度为 4 的字符`Food, Mood, Good`
* `ip`验证字段必须是有效的 IP 地址。
* `ip_v4`验证字段必须是有效的 IP V4 地址。
* `ip_v6`验证字段必须是有效的 IP V6 地址。
* `json`验证字段必须是有效的 JSON 字符串。
* `lat`验证的字段必须是有效的纬度。
* `lon`验证字段必须是有效的经度。
* `regex:regular expression`验证字段根据正则表达式进行验证。例如:`regex:^[a-zA-Z]+$`验证字母。
* `required`验证中的字段必须存在于输入数据中,并且不能为空。如果以下条件之一为真,则字段被视为“空”: 1) 值为空。2)该值是一个空字符串。3)零长度的地图,切片。4) 整数或浮点数的零值
* `size:integer`验证字段仅在表单数据中验证文件大小([参见示例](https://github.com/thedevsaddam/govalidator/blob/master/doc/FILE_VALIDATION.md))
* `ext:jpg,png`验证字段验证文件扩展名([参见示例](https://github.com/thedevsaddam/govalidator/blob/master/doc/FILE_VALIDATION.md))
* `mime:image/jpg,image/png`验证字段验证文件 mime 类型([参见示例](https://github.com/thedevsaddam/govalidator/blob/master/doc/FILE_VALIDATION.md))
* `url`验证字段必须是有效的 URL。
* `uuid`验证中的字段必须是有效的 UUID。
* `uuid_v3`验证中的字段必须是有效的 UUID V3。
* `uuid_v4`验证字段必须是有效的 UUID V4。
* `uuid_v5`验证的字段必须是有效的 UUID V5。
## 添加自定义验证规则
```
func init() {
// simple example
govalidator.AddCustomRule("must_john", func(field string, rule string, message string, value interface{}) error {
val := value.(string)
if val != "john" || val != "John" {
return fmt.Errorf("The %s field must be John or john", field)
}
return nil
})
// custom rules to take fixed length word.
// e.g: word:5 will throw error if the field does not contain exact 5 word
govalidator.AddCustomRule("word", func(field string, rule string, message string, value interface{}) error {
valSlice := strings.Fields(value.(string))
l, _ := strconv.Atoi(strings.TrimPrefix(rule, "word:")) //handle other error
if len(valSlice) != l {
return fmt.Errorf("The %s field must be %d word", field, l)
}
return nil
})
}
```
更多使用技巧,请查看 [https://github.com/thedevsaddam/govalidator](https://github.com/thedevsaddam/govalidator)
- 序言
- 基础
- 安装GoHub
- 目录结构
- 开发规范
- 部署项目
- 架构
- 架构总览
- 生命周期
- 配置
- 配置介绍
- 配置目录
- 配置格式
- 配置加载
- 读取配置
- 动态配置
- 环境变量配置
- 路由
- 路由模式
- 路由定义
- 路由参数
- 路由分组
- 路由限流
- 路由拆分
- 控制器
- 控制定义
- 控制器初始化
- 中间件
- Make创建控制器
- 请求
- 请求信息
- 数据库
- 连接数据库
- 基本使用
- Make创建模型
- 日志
- 介绍
- 日志驱动
- 日志写入
- HTTP日志
- 数据库请求日志
- 错误和调试
- Debuger调试器
- 验证
- 验证器
- 验证规则
- Make创建验证器
- 杂项
- 缓存
- 分页
- 验证码
- CURL请求
- 命令行
- 基础知识
- console 包
- Cobra 基础
- 命令行模式
- 附录
- 配置参考
- 第三方依赖库