# 验证规则 ThinkPHP 系统内置多种验证规则,常见的有以下几种 : 必填 - **require**,验证某个字段必须 基础格式 - **number**,验证某个字段必须为数值 - **alpha**,验证某个字段的值是否为字母 - **alphaNum**,验证某个字段的值是否为字母和数字 - **alphaDash**,验证某个字段的值是否为字母和数字,下划线 `_` 及破折号 `-` - **chs**,验证某个字段的值只能是汉字 - **chsAlpha**,验证某个字段的值只能是汉字、字母 - **chsAlphaNum**,验证某个字段的值只能是汉字、字母和数字 复合格式 - **email**,验证某个字段必须为邮箱 - **url**,验证某个字段的值是否为有效的URL地址 - **ip**,验证某个字段的值是否为有效的IP地址 - **mobile**,验证某个字段的值是否为有效的手机 - **idCard**,验证某个字段的值是否为有效的身份证格式 - **zip**,验证某个字段的值是否为有效的邮政编码 长度和区间 - **between: a,b**,验证某个字段的值是否在某个区间 - **notBetween: a, b**,验证某个字段的值不在某个范围 - **length: a, b**,验证某个字段的值的长度是否在某个范围 - **in: a, b, c, ...**,验证某个字段的值是否在某个范围 - **notIn: a, b, c, ...**,验证某个字段的值不在某个范围 - **max:number**,验证某个字段的值的最大长度 - **min:number**,验证某个字段的值的最小长度 字段比较 - **confirm** 验证某个字段是否和另外一个字段的值一致 比如 ``` 'password|密码' => 'confirm' ``` 自动与 `password_confirm` 字段进行自动校验。 也可以指定要比较的字段 : ``` 'repassword'=>'confirm:password' ``` - **different** 验证某个字段是否和另外一个字段的值不一致 比如 ``` 'name'=>'different:account' ``` - **eq** 或者 **=** 或者 **same**,验证是否等于某个值 比如 ``` 'score'=>'eq:100' 'num'=>'=:100' 'num'=>'same:100' ``` - **egt** 或者 **>=**,验证是否大于等于某个值 比如 ``` 'score'=>'egt:60' 'num'=>'>=:100' ``` - **gt** 或者 **>**,验证是否大于某个值 比如 ``` 'score'=>'gt:60' 'num'=>'>:100' ``` - **elt** 或者 **<=**,验证是否小于等于某个值 比如 ``` 'score'=>'elt:100' 'num'=>'<=:100' ``` - **lt** 或者 **<**,验证是否小于某个值 比如 ``` 'score'=>'lt:100' 'num'=>'<:100' ``` - 字段比较 可以验证对比其他字段大小(数值大小对比),例如: ``` 'price'=>'lt:market_price' 'price'=>'<:market_price' ``` ## 正则验证 支持直接使用正则验证,例如: ``` 'zip'=>'\d{6}', // 或者 'zip'=>'regex:\d{6}', ``` 如果正则表达式中包含有 `|` 符号的话,必须使用数组方式定义。 ``` 'accepted'=>['regex'=>'/^(yes|on|1)$/i'], ``` 也可以实现预定义正则表达式后直接调用,例如在验证器类中定义regex属性 ``` namespace app\index\validate; use think\Validate; class User extends Validate { protected $regex = [ 'zip' => '\d{6}']; protected $rule = [ 'zip' => 'regex:zip', ]; } ```