# Validator
# 表单验证
# 引入
import {Validator} from 'fanlelee-t-1-1'
# 参数
需要提供两个参数,data、rules。
# data对象
包含要验证的数据。
例:let data = {'email': 'xx@bb.com', ...}
# rules数组
包含验证目标及验证参数;
其中验证先后顺序按照数组元素0~n;
特殊规则:required: true
会优先验证;
例:let rules = [ {key: 'email', required: true, pattern: /^.+@.+$/}, {...} ]
# 使用
import {Validator} from 'fanlelee-t-1-1'
let data = {
'email': '',
}
let rules = [
{key: 'email', required: true, pattern: /^.+@.+$/},
]
let validator = new Validator()
let errors = validator.validate(data, rules)
//erros: {
// email: {
// required: "必填"
// }
// }
# 提供以下几种验证:
# 1. pattern 正则
pattern: reg/'email'
import {Validator} from 'fanlelee-t-1-1'
let data = {
'email': 'ddd',
}
let rules = [
{key: 'email', pattern: /^.+@.+$/},
]
let validator = new Validator()
let errors = validator.validate(data, rules)
//erros: {
// email: {
// required: "必填"
// }
// }
# 2. minLength 最小长度
import {Validator} from 'fanlelee-t-1-1'
let data = {
'email': 'ddd',
}
let rules = [
{key: 'email', minLength: 10, pattern: 'email'}
]
let validator = new Validator()
let errors = validator.validate(data, rules)
//erros: {
// email: {
// minLength: "太短了",
// pattern: "格式不正确"
// }
// }
# 3. maxLength 最大长度
import {Validator} from 'fanlelee-t-1-1'
let data = {
'email': 'asdf@wwwwffffg',
}
let rules = [
{key: 'email', maxLength: 10},
]
let validator = new Validator()
let errors = validator.validate(data, rules)
//erros: {
// email: {
// maxLength: "太长了"
// }
// }
# 自定义新规则
自定义新规则后,创建多个Validator并不会相互影响。
import {Validator} from 'fanlelee-t-1-1'
let data = {
'email': 'asdffjfjfjffffff'
}
let validator1 = new Validator()
let validator2 = new Validator()
validator1.hasNumber = (value) => {
if (!/\d/.test(value)) {
return '必须含有数字'
}
}
let rules = [{key: 'email', hasNumber: true}]
let errors1 = validator1.validate(data, rules)
// errors1: {email: {hasNumber: "必须含有数字"}}
let errors2 = validator2.validate(data, rules)
// 会抛出错误,不存在的校验器:hasNumber
# 可以全局添加新规则
Validator提供add方法来自定义全局添加新规则。
import {Validator} from 'fanlelee-t-1-1'
let data = {
'email': 'asdffjfjfjffffff'
}
let validator1 = new Validator()
let validator2 = new Validator()
Validator.add('hasNumber' ,(value) => {
if (!/\d/.test(value)) {
return '必须含有数字'
}
})
let rules = [{key: 'email', required: true, minLength: 5, maxLength: 10, hasNumber: true}]
let errors1 = validator1.validate(data, rules)
// errors1:{email: {hasNumber: "必须含有数字"}}
let errors2 = validator2.validate(data, rules)
// errors2:{email: {hasNumber: "必须含有数字"}}