validate data
npm install @yorkjs/validator数据校验
CDN
``html
`
NPM
`shell`
npm install @yorkjs/validator
`js`
import { Validator } from '@yorkjs/validator'
YARN
`shell`
yarn add @yorkjs/validator
`js`
import { Validator } from '@yorkjs/validator'
`js
import {
Validator,
} from '@yorkjs/validator'
const validator = new Validator()
const errors = validator.validate(
// 表单数据
{
nickname: 'xx',
age: 101
},
// 校验规则
{
nickname: {
type: 'string',
min: 5,
max: 10
},
age: {
type: 'int',
min: 18,
max: 100
}
},
// 错误信息
{
nickname: {
type: '昵称类型错误',
min: '昵称请不要少于 5 个字',
max: '昵称请不要超过 10 个字'
},
age: {
type: '年龄类型错误',
min: '年龄最小为 18 岁',
max: function (rule) {
// 可配置函数,方便读取 rule 动态输出错误信息
return '年龄最大为 ' + rule.max + ' 岁'
}
}
}
)
// 如果没有错误,errors 为 undefined
// 如果有错误,格式如下:
{
nickname: '昵称请不要少于 5 个字',
age: '年龄最大为 100 岁'
}
`
每种规则都支持 required 规则,即数据是否包含某个字段,默认为 true。
* type:必须是字符串类型empty
* :可选,是否可以是 "",默认为 falsemin
* : 可选,字符串长度的下限,类似至少输入 n 个字符max
* : 可选,字符串长度的上限,类似最多输入 n 个字符pattern
* : 可选,正则校验custom
* : 可选,支持自定义验证函数
`js`
{
type: 'string',
empty: true,
min: 5,
max: 10000,
pattern: /^\d+$/,
custom: function (value) {
if (value.length !== 6) {
// 返回错误类型,只要能对应上错误信息中的 key 就行
return 'custom'
}
}
}
* type:必须是整数,浮点数会验证失败min
* : 可选,整数的下限max
* : 可选,整数的上限
`js`
{
type: 'integer',
min: 1,
max: 100
}
* type:可以是整数或浮点数,NaN 会验证失败min
* : 可选,数字的下限max
* : 可选,数字的上限precision
* : 可选,浮点数的最大精度
`js`
{
type: 'number',
min: 1,
max: 100,
precision: 2
}
* type:必须是布尔类型value
* : 可选,强制为 true 或 false
`js`
{
type: 'boolean',
value: true
}
* type:必须是 values 中的某一个values
* : 枚举值
`js`
{
type: 'enum',
values: [1, 2, 3]
}
* type:必须是数组类型min
* : 可选,数组长度的下限max
* : 可选,数组长度的上限itemType
* : 可选,数组项的类型,常见的类型包括 string、number、boolean
`js`
{
type: 'array',
values: [1, 2, 3]
}
* type:必须是对象类型
`js`
{
type: 'object'
}
我们可以把一些业务常用的规则,注册到 Validator 实例中,这样可以避免同一个规则配置重复出现在多个地方,提高代码的可维护性。
`js
import {
Validator,
checkString,
checkInteger,
} from '@yorkjs/validator'
const validator = new Validator()
// 添加业务字段
validator.add(
// 校验规则
{
name(rule, value) {
return checkString(
{
required: rule.required,
empty: rule.empty,
type: 'string',
min: 5,
max: 10,
},
value
)
},
age(rule, value) {
return checkInteger(
{
required: rule.required,
type: 'integer',
min: 18,
max: 100
},
value
)
}
},
// 报错信息
{
name: {
required: '请输入用户名',
empty: '请输入用户名',
type: '用户名类型错误',
min: '用户名请不要少于 5 个字',
max: '用户名请不要超过 10 个字'
},
age: {
required: '请输入年龄',
type: '年龄类型错误',
min: '年龄最小为 18 岁',
max: '年龄最大为 100 岁'
}
}
)
// 使用场景
const errors = validator.validate(
// 表单数据
{
nickname: 'this is a long name',
age: 101
},
// 指定 nickname 对应的校验规则为 name
{
nickname: 'name',
age: 'age'
}
)
`
全平台适用,但需要确认以下函数是否存在:
```
Array.isArray
如不存在,请自行打补丁。