内置规则

系统内置了一些常用的验证规则,可以满足大部分的验证需求,包括:


常规验证

require

验证某个字段必须,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'require' => true,
  4. ),
  5. );

accepted

验证某个字段是否为为 yes, on, 或是 1。这在确认 “服务条款” 是否同意时很有用,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'accepted' => true,
  4. ),
  5. );

长度和区间验证

in

验证某个字段的值是否在某个范围,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'in' => '1,2,3',
  4. ),
  5. );

not_in

验证某个字段的值不在某个范围,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'not_in' => '1,2,3',
  4. ),
  5. );

between

验证某个字段的值是否在某个区间,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'between' => '25,60',
  4. ),
  5. );

not_between

验证某个字段的值不在某个区间,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'not_between' => '20,30',
  4. ),
  5. );

length

验证某个字段的值的长度是否在某个范围,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'length' => '4,25',
  4. ),
  5. );

min

验证某个字段的值的最小长度,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'min' => 4,
  4. ),
  5. );

max

验证某个字段的值的最大长度,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'max' => 25,
  4. ),
  5. );

after

验证某个字段的值是否在某个日期之后,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'after' => '2016-3-18',
  4. ),
  5. );

before

验证某个字段的值是否在某个日期之前,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'before' => '2016-3-18',
  4. ),
  5. );

expire

验证某个字段是否在某个有效日期之内,例如:

  1. $rule = array(
  2. 'name' => array(
  3. 'expire' => '2016-2-1,2016-10-01',
  4. ),
  5. );

字段比较

confirm

验证某个字段是否和另外一个字段的值一致,例如:

  1. $rule = array(
  2. 'password' => array(
  3. 'require' => true,
  4. ),
  5. 'password_confirm' => array(
  6. 'confirm' => true,
  7. ),
  8. );

系统会自动验证 password_confirm 与 password 是否一致。

该规则是自动验证的,只要在需要验证的字段名后加上 _confirm,也可以指定需要验证的字段名,例如:

  1. $rule = array(
  2. 'password' => array(
  3. 'require' => true,
  4. ),
  5. 'repassword' => array(
  6. 'confirm' => 'password',
  7. ),
  8. );

different

验证某个字段是否和另外一个字段的值不一致,例如:

  1. $rule = array(
  2. 'account' => array(
  3. 'require' => true,
  4. ),
  5. 'account_different' => array(
  6. 'different' => true,
  7. ),
  8. );

该规则与 confirm 类似,只要在需要验证的字段名后加上 _different,也可以指定需要验证的字段名,例如:

  1. $rule = array(
  2. 'account' => array(
  3. 'require' => true,
  4. ),
  5. 'reaccount' => array(
  6. 'different' => 'account',
  7. ),
  8. );

gt 或 >

验证是否大于某个值,例如:

  1. $rule = array(
  2. 'score' => array(
  3. 'gt' => 100,
  4. ),
  5. 'num' => array(
  6. '>' => 100,
  7. ),
  8. );

egt 或 >=

验证是否大于等于某个值,例如:

  1. $rule = array(
  2. 'score' => array(
  3. 'egt' => 100,
  4. ),
  5. 'num' => array(
  6. '>=' => 100,
  7. ),
  8. );

lt 或 <

验证是否小于某个值,例如:

  1. $rule = array(
  2. 'score' => array(
  3. 'lt' => 100,
  4. ),
  5. 'num' => array(
  6. '<' => 100,
  7. ),
  8. );

elt 或 <=

验证是否小于等于某个值,例如:

  1. $rule = array(
  2. 'score' => array(
  3. 'elt' => 100,
  4. ),
  5. 'num' => array(
  6. '<=' => 100,
  7. ),
  8. );

eq、= 或 same

验证是否等于某个值,例如:

  1. $rule = array(
  2. 'score' => array(
  3. 'eq' => 100,
  4. ),
  5. 'num' => array(
  6. '=' => 100,
  7. ),
  8. 'num' => array(
  9. 'same' => 100,
  10. ),
  11. );

neq、<> 或 !=

验证是否不等于某个值,例如:

  1. $rule = array(
  2. 'score' => array(
  3. 'neq' => 100,
  4. ),
  5. 'num' => array(
  6. '<>' => 100,
  7. ),
  8. 'num' => array(
  9. '!=' => 100,
  10. ),
  11. );

格式验证

格式验证只需设置 format 参数

  1. $rule = array(
  2. 'name' => array(
  3. 'format' => 'number',
  4. ),
  5. );

format 参数可选如下值

描述 备注
number 纯数字 不包含负数和小数点
int 整数
float 浮点数
bool 布尔值
email Email
array 数组
date 有效日期
time 有效时间 会对值进行 strtotime 后判断
date_time 有效日期时间
alpha 字母
alpha_number 字母与纯数字
alpha_dash 字母、数字、破折号与下划线
chs 中文
chs_alpha 中文与字母
chs_alpha_number 中文、字母与纯数字
chs_dash 中文、字母、数字、破折号与下划线
url URL 地址
ip IP 地址 含 IPv4 与 IPv6

特殊格式验证

以下规则为验证值是否为指定的格式,如:

假设规则为 Y-m-d

表单输入值为 2019-05-06 时,验证通过

表单输入值为 19-05-06May. 6, 2019 验证不通过

date_format

验证某个字段的值是否为指定格式的日期,例如:

  1. $rule = array(
  2. 'create_time' => array(
  3. 'date_format' => 'Y-m-d',
  4. ),
  5. );

time_format

验证某个字段的值是否为指定格式的时间,例如:

  1. $rule = array(
  2. 'create_time' => array(
  3. 'time_format' => 'H:i:s',
  4. ),
  5. );

date_time_format

验证某个字段的值是否为指定格式的日期时间,例如:

  1. $rule = array(
  2. 'create_time' => array(
  3. 'date_time_format' => 'Y-m-d H:i:s',
  4. ),
  5. );

filter 验证

支持使用 filter_var 进行验证,例如:

  1. $rule = array(
  2. 'ip' => array(
  3. 'filter' => FILTER_VALIDATE_IP,
  4. ),
  5. );

正则验证

支持直接使用正则验证,例如:

  1. $rule = array(
  2. 'zip' => array(
  3. 'regex' => '\d{6}',
  4. ),
  5. );