ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
验证规则的定义通常有两种方式,如果你使用了验证器的话,通常通过`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格式" }); ~~~