@ntbl/validator

一个内置验证规则的数据验证库

Usage no npm install needed!

<script type="module">
  import ntblValidator from 'https://cdn.skypack.dev/@ntbl/validator';
</script>

README

validator

GitHub npm MIT

validator 是一个内置验证规则的数据验证库。

Installation

npm i @ntbl/validator --save

Usage

import Validator from '@ntbl/validator'

// 表单数据
const formData = {
  username: 'sunny',
  password: '1234567',
  mali: 'hsy.ntbl@gmail.com',
  point: [4, 4, 5]
};

// 验证规则
const rules = {
  username: [
    // 使用内置的自定义规则
    {rule: 'required', msg: '必须填写用户名'},
  ],

  password: [
    {rule: 'required', msg: '必须填写密码'},
    // 使用数组的方式带参数
    {rule: ['min', 6], msg: '不少于 6 个字符'},
    {rule: ['max', 16], msg: '不超过 16 个字符'},
  ],

  mali: [
    {rule: 'required', msg: '必须填写邮箱'},
    // 使用 validator.js 库支持的验证规则
    {rule: 'isEmail', msg: '邮箱格式不正确'}
  ],

  point: [
    // 或者自定义函数
    {rule: d => d.every(e => e > 3) , msg: '骰子的点数必须都大于 3 点'}
  ]
};

const validator = Validator(formData, rules);

// 验证所有的字段
// 返回 undefined,即无错误信息,表示验证通过
console.log(validator.validate())   // undefined

// 仅验证 emil 字段
console.log(validator.validateOf('emil'))   // undefined
const formData1 = {
  username: 'sunny',
  password: '123',
  mali: 'hsy.ntbl',
  point: [4, 4, 5]
};

const validator2 = Validator(formData1, rules);

// 验证未通过时,将返回一个错误数组

console.log(validator2.validate())
/*
    [
        { name: 'password', msg: '不少于 6 个字符' },
        { name: 'mali', msg: '邮箱格式不正确' }
    ]
*/

// 请注意 validateOf 返回的是一个错误对象
console.log(validator2.validateOf('mali'))
// { name: 'mali', msg: '邮箱格式不正确' }

验证规则

validator 内置了所有 validator.js 支持的验证规则。

除此之外,validator 还内置以下方便使用的自定义验证规则:

  • required(): 不能为空
  • min(n): 字符串/数值的长度或数值或不小于指定大小
  • max(n): 字符串/数值的长度或数值或不小于指定大小
  • is(pattern): 自定义验证规则