Product
Introducing SSO
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
base-validator
Advanced tools
Readme
基础的表单验证器。用于 Browser 和 Node.js 环境下校验用户提交的数据。
npm i -S base-validator
const Validator = require('base-validator')
// 定义校验规则
const rule = [
{
prop: 'phone',
msg: '手机号码不能为空',
assert: 'required'
}
]
// 待校验的数据
const form = {
phone: ' ' // 该值只包含空格和制表符,无法通过 required 校验
}
const msg = Validator(form, rule)
console(msg) // 手机号码不能为空
校验数据是否符合期望值。返回第一项不通过的项目的错误提示语 <string>。全部通过时返回 undefined
data
<object> 待校验的数据对象rule
<Array[object]> 校验的规则,对象数组。
property
<string> 校验的字段名。Alias:prop、keymessage
<string> 校验不通过时的提示语。Alias:msgassert
<string> 校验的策略,支持的列表参考 Assert 表。expected
<any> 期望值。部分校验策略需要带期望值。同 Validator(data, rule) ,但返回全部不通过的项目。
assert | 描述 |
---|---|
tel | 手机号码。别名:mobile、phone |
电子邮箱。别名:mail | |
idcard | 居民身份证。 |
url | url。别名:URL |
min | 最小值。仅允许数字类型和数字格式字符串,不允许布尔值。别名:gte |
max | 最大值。仅允许数字类型和数字格式字符串,不允许布尔值。别名:lte |
minlength | 最小长度值。对于数组,元素的个数应大于等于期望值;对于字符串,则是字符的个数。期望值描述的是长度,应为整数类型 |
maxlength | 最大长度值。对于数组,元素的个数应小于等于期望值;对于字符串,则是字符的个数。期望值描述的是长度,应为整数类型 |
number | 数字类型。允许 Number 类型或符合数字格式的字符串(前后可包含一个或多个空白字符,可以是小数和负数) |
digits | 整数类型。允许整数或整数格式的字符串(前后可包含一个或多个空白字符,可以是负数) |
between | 实际值应该在期望的上限和下限之间,包含上限和下限。期望值可以是数组或数字类型,则上限值和下限值相等。上限值和下限值不区分顺序,小的值为下限,大的值为上限。示例:expected: [0, 10] 或 expected: 10 |
lengthBetween | 实际值的长度应该在期望的上限和下限之间,包含上限和下限。期望值可以是数组或数字类型,则上限值和下限值相等。上限值和下限值不区分顺序,小的值为下限,大的值为上限。别名:length |
equalTo | 值相等。对于数组,元素的个数的位置必须一样;对于对象,键的数量和值必须一样。对于字符串,对比时忽略前后空白字符;对于数字,允许实际值为字符串;其他基本类型,进行全等对比(即对比类型和值)。别名:eq |
includes | 包含期望值。对于数组,对比的是单项(忽略前后空白字符);对于字符串,对比的是子串。 |
in | 在期望值中存在。对于数组,对比的是单项(忽略前后空白字符);对于字符串,对比的是子串(忽略前后空白字符)。 |
regular | 正则校验。期望值是 RegExp 类型或 string 类型(正则字面量格式) |
required | 必填。0 和 false 属于有效值;空数组和空对象属于有效值;仅包含一个或多个空白字符的字符串属于无效值;undefined 和 null 属于无效值。 |
在确保校验准确度的前提下,尽可能放宽规则。例:
符合数字格式的字符串或Number
类型均可以通过 number 校验。
允许数据前后包含空白字符,用户可能不会注意到输入了空白字符。
0 和 false 出现在表单内,常作为 <input type="number" />
和 <input type="checkbox" />
的结果值。应当作有效值,可以通过 required 校验。
包含一个或多个空白字符的字符串,不包含任何可见字符,可能是用户无意中输入,但发现不到,这应当被 required 校验阻止。
Validator(data, rule) ,如果 data 对象没有 rule 中指定的属性,则不会提示,直接跳过。这样方便用一份 rule ,校验 data 的不同子集。是否有该属性用的是 Object.prototype.hasOwnProperty() 方法判断的。
// 定义全部校验规则
const RULE = [
{
prop: 'phone',
assert: 'required',
msg: '手机号码不能为空'
},
{
prop: 'code',
assert: 'required',
msg: '验证码不能为空'
}
]
let form = {
phone: '13688888888',
code: ''
}
// 发送验证码仅需要校验 phone 字段即可
function sendVerifyCode() {
let { phone } = form
// 校验部分字段
let msg = Validator({ phone }, RULE)
console.log(msg) // undefined
}
// 提交则需要校验 phone 字段和 code 字段
function submit() {
let msg = Validator(form, RULE)
console.log(msg) // 验证码不能为空
}
FAQs
The npm package base-validator receives a total of 6 weekly downloads. As such, base-validator popularity was classified as not popular.
We found that base-validator demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.