validator
用于表单校验的方法,系统自带方法如下,也可在配置中拓展自定义的校验方法或覆盖系统自带的方法(键名一样即可覆盖)。
js
export const validatorMap = {
// 手机号(11位数字,以1开头)
mobile: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^1\d{10}$/;
return reg.test(value);
},
// 邮箱(标准格式,支持字母、数字、下划线及域名)
email: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[\w.-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
return reg.test(value);
},
// 中文姓名(支持少数民族“·”,2-20字符)
name: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$/;
return reg.test(value) && value.length >= 2 && value.length <= 20;
},
// 身份证号(18位,最后一位支持X/x)
idCard: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/;
if (!reg.test(value)) return false;
// 校验码验证
const code = '10X98765432';
const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
let sum = 0;
for (let i = 0; i < 17; i++) {
sum += parseInt(value[i]) * factor[i];
}
const checkCode = code[sum % 11];
return checkCode.toUpperCase() === value[17].toUpperCase();
},
// 密码(简单强度:6-20位,字母+数字)
passwordSimple: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^(?=.*[A-Za-z])(?=.*\d).{6,20}$/;
return reg.test(value);
},
// 密码(强强度:8-20位,大小写字母+数字+特殊字符)
passwordStrong: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*()_+{}:"<>?,.\/;'\[\]])[A-Za-z\d!@#$%^&*()_+{}:"<>?,.\/;'\[\]]{8,20}$/;
return reg.test(value);
},
// 纯数字(支持正负整数、小数)
number: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[-+]?(\d+(\.\d*)?|\.\d+)$/;
return reg.test(value);
},
// 整数(支持正负,不包含小数)
integer: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[-+]?\d+$/;
return reg.test(value);
},
// 正整数(大于0的整数)
positiveInteger: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[1-9]\d*$/;
return reg.test(value);
},
// 金额(最多两位小数,正数)
amount: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^(0|([1-9]\d*))(\.\d{1,2})?$/;
return reg.test(value);
},
// 日期(YYYY-MM-DD格式,简单校验月份和日期范围)
date: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/;
if (!reg.test(value)) return false;
const [year, month, day] = value.split('-').map(Number);
const date = new Date(year, month - 1, day);
return date.getFullYear() === year && date.getMonth() + 1 === month && date.getDate() === day;
},
// 邮政编码(中国6位数字)
postalCode: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[1-9]\d{5}$/;
return reg.test(value);
},
// 固定电话(带区号,如010-12345678或(010)12345678)
landline: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^(0\d{2,3}-|\(0\d{2,3}\))?[1-9]\d{7,8}$/;
return reg.test(value);
},
// 银行卡号(16-19位数字)
bankCard: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[1-9]\d{15,18}$/;
return reg.test(value);
},
// URL(支持http/https/ftp,含域名和路径)
url: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^(https?:\/\/|ftp:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([\/\w.-]*)*\/?$/i;
return reg.test(value);
},
// 纯中文(不含其他字符)
chinese: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[\u4e00-\u9fa5]+$/;
return reg.test(value);
},
// 纯字母(大小写均可)
letter: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[A-Za-z]+$/;
return reg.test(value);
},
// 字母或数字(不含特殊字符)
letterOrNumber: (value) => {
if (value === null || value === undefined || value === '') return true;
const reg = /^[A-Za-z0-9]+$/;
return reg.test(value);
}
};如需补充或者修改,可阅读配置进行拓展 点击前往配置文档

