针对字段较多的内容非空和位数校验封装:
/**
* 校验内容是否匹配格式
* @param val:string 传入需要校验的内容, 必填参数
* @param ifEmpty:boolean 需要校验是否不能为空, 必填参数
* @description:
* true-不能为空
* false-不做是否为空拦截
*
* @param options{}: 位数校验
* @description:
* isFormatDigits: boolean(默认为true) true-需要校验位数;false-不需要校验位数
* area:number(默认为1) 1-等于;2-小于且等于;3-大于且等于;4-大于;5-小于
* digits:number(默认为32) 位数;结合参数area使用,校验内容的位数是否符合格式;
*
*/
formatArg(val, ifEmpty, options) {
// 将传入内容转成字符串
val = val + '';
// 设置默认选项
let empty_result;
let new_options = {};
const default_options = {
isFormatDigits: true,
area: 1,
digits: 32
};
// 去除前后空格,如果此时为空则说明全为空格,否则就去除前后空格保留内容
const new_val = val.replace(/(^\s*)|(\s*$)/g, '');
// 第一步:判断是否为空,符合格式则往下进行
if (ifEmpty) {
// TODO: 此处写判断为空的代码 并return结果
if (!val || new_val === '') {
empty_result = false;
return false
}
}
// 否则 为空校验通过 继续执行
// 注意全空格的情况处理 ' '
empty_result = true;
// 第二步:判断是否有options 且为对象且不为空对象,不满足则不需要位数校验,直接return true,不阻塞程序进程
if (!options ||
Object.prototype.toString.call(options) !== '[object Object]' ||
!Object.keys(options).length) {
new_options = Object.assign({}, default_options);
} else {
// 满足则需要位数校验,将传入的 options 覆盖默认选项
new_options = Object.assign({}, default_options, options);
}
if (!new_options.isFormatDigits) {
// 不需要校验位数
return empty_result && true
} else {
// val: 为空 为全空格 有值
// 此处写校验位数的代码:1-等于;2-小于且等于;3-大于且等于;4-大于;5-小于
switch (new_options['area'] * 1) {
case 1:
// TODO: 是否等于校验位数
return new_val.length === new_options['digits']
case 2:
// TODO: 是否小于且等于校验位数
return !(new_val.length > new_options['digits'])
case 3:
// TODO: 是否大于且等于校验位数
return !(new_val.length < new_options['digits'])
case 4:
// TODO: 是否大于校验位数
return new_val.length > new_options['digits']
case 5:
// TODO: 是否小于校验位数
return new_val.length < new_options['digits']
default:
break;
}
}
// 如果不做空拦截 且 不做位数判断 则默认return true,不阻塞程序进程
return empty_result && true;
}