验证规则的定义通常有两种方式,如果你使用了验证器的话,通常通过`constructor`构建函数中的`super()`方法定义验证规则,而如果使用的是独立验证的话,则是通过`setRule`方法进行定义。
## super定义
```
class LoginValidate extends Validate
{
constructor()
{
const rules = {
'user' : 'require|mail|max:30',
'pass' : 'require|chsDash|length:6,16'
}
super(rules)
}
}
```
>[danger] 系统内置了一些常用的验证规则可以满足大部分的验证需求,具体每个规则的含义参考内置规则一节。
> 一个字段可以使用多个验证规则(如上面的`user`字段定义了`require`和`max`两个验证规则)
## 方法定义
如果使用的是独立验证(即手动调用验证类进行验证)方式的话,通常使用`setRule`方法进行验证规则的设置,举例说明如下。
~~~
$data = {
'user' : 'admin@admin.com',
'pass' : '123456'
};
const rules = {
'user' : 'require|mail|max:30|diy:1111',
'pass' : 'require|chsDash|length:6,16'
};
const login = new Validate();
login.setRule(rules)
if(!login.check($data)){
console.log(login.getError())
}
~~~
## 自定义验证规则
系统内置了一些常用的规则(参考后面的内置规则),如果不能满足需求,可以在验证器重添加额外的验证方法,例如:
~~~
class User extends Validate
{
constructor(){
const rules = {
'name' : 'require|check_name:michael',
'email' : 'mail'
};
const message = {
'name.require' : '用户名必须填写',
'email.mail' : '填入的邮箱不是有效的电子邮件地址'
}
super(rules,message)
}
check_name(value, rule, data = {})
{
return value === rule ? true : '用户名错误';
}
}
~~~
验证方法可以传入的参数共有`4`个(后面两个根据情况选用),依次为:
* 验证数据
* 验证规则
* 全部数据(数组)
* 其他数据(数组)如`check_name:michael:1:2` 此处为除去`michael`以外的`1,2`数据
## 自定义正则规则
预定义一个或多个正则规则
~~~
this.setRegex({
"qq":/[1-9][0-9]{4,}/
});
~~~
然后就可以和其他规则一样使用
~~~
this.setRule({
"value" :"qq"
});
this.setMsg({
"value.qq" :"请输入正确的QQ格式"
});
~~~