## 内置验证器
> `/`分隔的验证器,表明功能是一样的,只是有不同的别名
| 验证器 | 说明 | 规则示例 |
| --- | --- | --- |
| `required` | 要求此字段/属性是必须的(不为空的)。[关于为空](https://github.com/inhere/php-validate#about-empty-value) | `['tagId, userId', 'required' ]` |
| `int/integer` | 验证是否是 int**支持范围检查** | `['userId', 'int']``['userId', 'int', 'min'=>4, 'max'=>16]` |
| `num/number` | 验证是否是 number(大于0的整数)**支持范围检查** | `['userId', 'number']``['userId', 'number', 'min'=>4, 'max'=>16]` |
| `bool/boolean` | 验证是否是 bool.[关于bool值](https://github.com/inhere/php-validate#about-bool-value) | `['open', 'bool']` |
| `float` | 验证是否是 float | `['price', 'float']` |
| `string` | 验证是否是 string.**支持长度检查** | `['name', 'string']`,`['name', 'string', 'min'=>4, 'max'=>16]` |
| `accepted` | 验证的字段必须为`yes/on/1/true`这在确认「服务条款」是否同意时有用(ref laravel) | `['agree', 'accepted']` |
| `url` | 验证是否是 url | `['myUrl', 'url']` |
| `email` | 验证是否是 email | `['userEmail', 'email']` |
| `alpha` | 验证值是否仅包含字母字符 | `['name', 'alpha']` |
| `alphaNum` | 验证是否仅包含字母、数字 | `['field', 'alphaNum']` |
| `alphaDash` | 验证是否仅包含字母、数字、破折号( - )以及下划线( \_ ) | `['field', 'alphaDash']` |
| `map/isMap` | 验证值是否是一个非自然数组 map (key - value 形式的) | `['goods', 'isMap']` |
| `list/isList` | 验证值是否是一个自然数组 list (key是从0自然增长的) | `['tags', 'isList']` |
| `array/isArray` | 验证是否是数组 | `['goods', 'isArray']` |
| `each` | 对数组中的每个值都应用**给定的验证器**(这里的绝大多数验证器都可以使用),并且要**全部通过** | `['goods.*','each','string']`,`['goods.*','each','string','min'=>3]` |
| `hasKey` | 验证数组存在给定的key(s) | `['goods', 'hasKey', 'pear']``['goods', 'hasKey', ['pear', 'banana']]` |
| `distinct` | 数组中的值必须是唯一的 | `['goods', 'distinct']`,`['users.*.id', 'distinct']` |
| `ints/intList` | 验证字段值是否是一个 int list | `['tagIds', 'intList']` |
| `numList` | 验证字段值是否是一个 number list | `['tagIds', 'numList']` |
| `strings/strList` | 验证字段值是否是一个 string list | `['tags', 'strList']` |
| `arrList` | 验证字段值是否是一个 array list(多维数组) | `['tags', 'arrList']` |
| `min` | 最小边界值验证 | `['title', 'min', 40]` |
| `max` | 最大边界值验证 | `['title', 'max', 40]` |
| `size/range/between` | 验证大小范围, 可以支持验证`int`,`string`,`array`数据类型 | `['tagId', 'size', 'min'=>4, 'max'=>567]` |
| `length` | 长度验证( 跟`size`差不多, 但只能验证`string`,`array`的长度 | `['username', 'length', 'min' => 5, 'max' => 20]` |
| `fixedSize/sizeEq/lengthEq` | 固定的长度/大小(验证`string`,`array`长度,`int`大小) | `['field', 'fixedSize', 12]` |
| `startWith` | 值(`string/array`)是以给定的字符串开始 | `['field', 'startWith', 'hell']` |
| `endWith` | 值(`string/array`)是以给定的字符串结尾 | `['field', 'endWith', 'world']` |
| `in/enum` | 枚举验证: 包含 | `['status', 'in', [1,2,3]]` |
| `notIn` | 枚举验证: 不包含 | `['status', 'notIn', [4,5,6]]` |
| `inField` | 枚举验证: 字段值 存在于 另一个字段(anotherField)的值中 | `['field', 'inField', 'anotherField']` |
| `eq/mustBe` | 必须是等于给定值 | `['status', 'mustBe', 1]` |
| `ne/neq/notBe` | 不能等于给定值 | `['status', 'notBe', 0]` |
| `eqField` | 字段值比较: 相同 | `['passwd', 'eqField', 'repasswd']` |
| `neqField` | 字段值比较: 不能相同 | `['userId', 'neqField', 'targetId']` |
| `ltField` | 字段值比较: 小于 | `['field1', 'ltField', 'field2']` |
| `lteField` | 字段值比较: 小于等于 | `['field1', 'lteField', 'field2']` |
| `gtField` | 字段值比较: 大于 | `['field1', 'gtField', 'field2']` |
| `gteField` | 字段值比较: 大于等于 | `['field1', 'gteField', 'field2']` |
| `requiredIf` | 指定的其它字段( anotherField )值等于任何一个`value`时,此字段为**必填**(ref laravel) | `['city', 'requiredIf', 'myCity', ['chengdu'] ]` |
| `requiredUnless` | 指定的其它字段( anotherField )值等于任何一个`value`时,此字段为**不必填**(ref laravel) | `['city', 'requiredUnless', 'myCity', ['chengdu'] ]` |
| `requiredWith` | 指定的字段中的*任意一个*有值且不为空,则此字段为**必填**(ref laravel) | `['city', 'requiredWith', ['myCity'] ]` |
| `requiredWithAll` | 如果指定的*所有字段*都有值,则此字段为**必填**(ref laravel) | `['city', 'requiredWithAll', ['myCity', 'myCity1'] ]` |
| `requiredWithout` | 如果缺少*任意一个*指定的字段值,则此字段为**必填**(ref laravel) | `['city', 'requiredWithout', ['myCity', 'myCity1'] ]` |
| `requiredWithoutAll` | 如果所有指定的字段**都没有值**,则此字段为**必填**(ref laravel) | `['city', 'requiredWithoutAll', ['myCity', 'myCity1'] ]` |
| `date` | 验证是否是 date | `['publishedAt', 'date']` |
| `dateFormat` | 验证是否是 date, 并且是指定的格式 | `['publishedAt', 'dateFormat', 'Y-m-d']` |
| `dateEquals` | 验证是否是 date, 并且是否是等于给定日期 | `['publishedAt', 'dateEquals', '2017-05-12']` |
| `beforeDate` | 验证字段值必须是给定日期之前的值(ref laravel) | `['publishedAt', 'beforeDate', '2017-05-12']` |
| `beforeOrEqualDate` | 字段值必须是小于或等于给定日期的值(ref laravel) | `['publishedAt', 'beforeOrEqualDate', '2017-05-12']` |
| `afterOrEqualDate` | 字段值必须是大于或等于给定日期的值(ref laravel) | `['publishedAt', 'afterOrEqualDate', '2017-05-12']` |
| `afterDate` | 验证字段值必须是给定日期之前的值 | `['publishedAt', 'afterDate', '2017-05-12']` |
| `json` | 验证是否是json字符串(默认严格验证,必须以`{``[`开始) | `['goods', 'json']``['somedata', 'json', false]`\- 非严格,普通字符串`eg 'test'`也会通过 |
| `file` | 验证是否是上传的文件 | `['upFile', 'file']` |
| `image` | 验证是否是上传的图片文件 | `['avatar', 'image']`, 限定后缀名`['avatar', 'image', 'jpg,png']` |
| `ip` | 验证是否是 IP | `['ipAddr', 'ip']` |
| `ipv4` | 验证是否是 IPv4 | `['ipAddr', 'ipv4']` |
| `ipv6` | 验证是否是 IPv6 | `['ipAddr', 'ipv6']` |
| `macAddress` | 验证是否是 mac Address | `['field', 'macAddress']` |
| `md5` | 验证是否是 md5 格式的字符串 | `['passwd', 'md5']` |
| `sha1` | 验证是否是 sha1 格式的字符串 | `['passwd', 'sha1']` |
| `color` | 验证是否是html color | `['backgroundColor', 'color']` |
| `regex/regexp` | 使用正则进行验证 | `['name', 'regexp', '/^\w+$/']` |
| `safe` | 用于标记字段是安全的,无需验证 | `['createdAt, updatedAt', 'safe']` |
### [](https://github.com/inhere/php-validate#safe-%E9%AA%8C%E8%AF%81%E5%99%A8%E6%A0%87%E8%AE%B0%E5%B1%9E%E6%80%A7%E5%AD%97%E6%AE%B5%E6%98%AF%E5%AE%89%E5%85%A8%E7%9A%84)`safe`验证器,标记属性/字段是安全的
特殊验证器 用于标记字段是安全的,无需验证,直接加入到安全数据中。
比如我们在写入数据库之前手动追加的字段: 创建时间,更新时间。
~~~html
['createdAt, updatedAt', 'safe']
~~~
### [](https://github.com/inhere/php-validate#%E4%B8%80%E4%BA%9B%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E)一些补充说明
- 前言
- 捐赠ESD项目
- 使用篇-通用
- 环境
- 安装
- 规范
- 压力测试
- 配置
- 如何设置YML配置
- server配置
- 端口配置
- 项目结构
- 事件派发
- 日志
- 注解
- DI容器
- 自定义进程
- 并发及协程池
- Console插件
- Scheduled插件
- Redis插件
- AOP插件
- Saber插件
- Mysql插件
- mysql事务
- Actuator插件
- Whoops插件
- Cache插件
- PHPUnit插件
- Security插件
- Session插件
- EasyRoute插件
- http路由
- ProcessRpc插件
- AutoReload插件
- AnnotationsScan插件
- Tracing-plugin插件
- MQTT插件
- Pack插件
- AMQP插件
- Validate插件
- Uid插件
- Topic插件
- Blade插件
- CsvReader插件
- hashed-wheel-timer-plugin插件
- 使用篇-HTTP
- 路由
- 静态文件
- 路由定义
- 修饰方法
- 路由分组
- 资源路由
- 端口作用域
- 异常处理
- 跨域请求
- 路由缓存
- 控制器
- 控制器初始化
- 前置操作
- 跳转和重定向
- 异常处理
- 请求
- 请求对象
- 请求信息
- request消息
- response消息
- stream消息
- url接口
- 验证器
- 内置验证器
- 内置过滤器
- 使用篇-WS
- 如何使用
- 路由
- 使用篇-TCP
- 插件篇-PluginSystem
- 微服务篇-ESDCloud
- CircuitBreaker插件
- SaberCloud插件
- 分布式链路追踪系统
- Consul插件