JS年龄、身份证号、出生日期、邮箱、密码、数字、中文等多种方式校验(持续完善中...)

news/2024/7/9 23:56:23 标签: vue.js, javascript, 前端, vue

1.年龄校验

export const validateCheckAge = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('年龄不能为空'));
	}
	setTimeout(() => {
		if (!Number.isInteger(value)) {
			callback(new Error('请输入数字值'));
		} else {
			if (value < 18) {
				callback(new Error('必须年满18岁'));
			} else {
				callback();
			}
		}
	}, 1000);
};

2.出生日期校验

export const validateCheckBirthday = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('出生日期不能为空'));
	}
	if (!/^((19[2-9]\d{1})|(20((0[0-9])|(1[0-8]))))\-((0?[1-9])|(1[0-2]))\-((0?[1-9])|([1-2][0-9])|30|31)$/.test(value)) {
		callback(new Error('请输入正确的出生日期'));
	} else {
		callback();
	}
};

3.密码校验

export const validatePsdReg = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('请输入密码'));
	}
	if (!/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/.test(value)) {
		callback(new Error('请输入6-20位英文字母、数字或者符号(除空格),且字母、数字和标点符号至少包含两种'));
	} else {
		callback();
	}
};

4.手机号校验

export function validatePhone(rule, value, callback) {
	const reg = /^[1][3-9][0-9]{9}$/;
	if (value == '' || value == undefined || value == null) {
		callback();
	} else {
		if (!reg.test(value) && value != '') {
			callback(new Error('请输入正确的电话号码'));
		} else {
			callback();
		}
	}
}

5.身份证号校验

export function validateIdNo(rule, value, callback) {
	const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
	if (value == '' || value == undefined || value == null) {
		callback();
	} else {
		if (!reg.test(value) && value != '') {
			callback(new Error('身份证号码不符合规范'));
		} else {
			callback();
		}
	}
}

6.邮箱校验

export function validateEMail(rule, value, callback) {
	const reg = /^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/;
	if (value == '' || value == undefined || value == null) {
		callback();
	} else {
		if (!reg.test(value)) {
			callback(new Error('请输入正确的邮箱'));
		} else {
			callback();
		}
	}
}

7.密码校验:英文数字下划线

export function isPassword(rule, value, callback) {
	const reg = /^[_a-zA-Z0-9]+$/;
	if (value == '' || value == undefined || value == null) {
		callback();
	} else {
		if (!reg.test(value)) {
			callback(new Error('仅由英文字母,数字以及下划线组成'));
		} else {
			callback();
		}
	}
}

8.中文校验

export const validateContacts = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('请输入中文'));
	}
	if (!/^[\u0391-\uFFE5A-Za-z]+$/.test(value)) {
		callback(new Error('不可输入特殊字符'));
	} else {
		callback();
	}
};

9.纯数字校验

export const validateCode = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('请输入账号'));
	}
	if (!/^(?![0-9]*$)(?![a-zA-Z]*$)[a-zA-Z0-9]{6,20}$/.test(value)) {
		callback(new Error('账号必须为6-20位字母和数字组合'));
	} else {
		callback();
	}
};

10.密码强度校验

export const validatePasswordLeg = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('请输入密码'));
	}
	if (/^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/.test(value)) {
		callback(new Error('账号必须为6-20位字母和数字组合'));
	} else {
		callback();
	}
};

11.是否手机号码或者固话

export function validatePhoneTwo(rule, value, callback) {
	const reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/;
	if (value == '' || value == undefined || value == null) {
		callback();
	} else {
		if (!reg.test(value) && value != '') {
			callback(new Error('请输入正确的电话号码或者固话号码'));
		} else {
			callback();
		}
	}
}

12.是否固话

export function validateTelphone(rule, value, callback) {
	const reg = /0\d{2}-\d{7,8}/;
	if (value == '' || value == undefined || value == null) {
		callback();
	} else {
		if (!reg.test(value) && value != '') {
			callback(new Error('请输入正确的固话(格式:区号+号码,如010-1234567)'));
		} else {
			callback();
		}
	}
}

13.自动检验数值的范围

export function checkMax20000(rule, value, callback) {
	if (value == '' || value == undefined || value == null) {
		callback();
	} else if (!Number(value)) {
		callback(new Error('请输入[1,20000]之间的数字'));
	} else if (value < 1 || value > 20000) {
		callback(new Error('请输入[1,20000]之间的数字'));
	} else {
		callback();
	}
}

14.验证数字输入框最大数值,32767

export function checkMaxVal(rule, value, callback) {
	if (value < 0 || value > 32767) {
		callback(new Error('请输入[0,32767]之间的数字'));
	} else {
		callback();
	}
}

15.验证是否1-99之间

export function isOneToNinetyNine(rule, value, callback) {
	if (!value) {
		return callback(new Error('输入不可以为空'));
	}
	setTimeout(() => {
		if (!Number(value)) {
			callback(new Error('请输入正整数'));
		} else {
			const re = /^[1-9][0-9]{0,1}$/;
			const rsCheck = re.test(value);
			if (!rsCheck) {
				callback(new Error('请输入正整数,值为【1,99】'));
			} else {
				callback();
			}
		}
	}, 0);
}

16.验证是否整数

export function isInteger(rule, value, callback) {
	if (!value) {
		return callback(new Error('输入不可以为空'));
	}
	setTimeout(() => {
		if (!Number(value)) {
			callback(new Error('请输入正整数'));
		} else {
			const re = /^[0-9]*[1-9][0-9]*$/;
			const rsCheck = re.test(value);
			if (!rsCheck) {
				callback(new Error('请输入正整数'));
			} else {
				callback();
			}
		}
	}, 0);
}

17.验证是否整数,非必填

export function isIntegerNotMust(rule, value, callback) {
	if (!value) {
		callback();
	}
	setTimeout(() => {
		if (!Number(value)) {
			callback(new Error('请输入正整数'));
		} else {
			const re = /^[0-9]*[1-9][0-9]*$/;
			const rsCheck = re.test(value);
			if (!rsCheck) {
				callback(new Error('请输入正整数'));
			} else {
				callback();
			}
		}
	}, 1000);
}

18.验证是否是[0-1]的小数

export function isDecimal(rule, value, callback) {
	if (!value) {
		return callback(new Error('输入不可以为空'));
	}
	setTimeout(() => {
		if (!Number(value)) {
			callback(new Error('请输入[0,1]之间的数字'));
		} else {
			if (value < 0 || value > 1) {
				callback(new Error('请输入[0,1]之间的数字'));
			} else {
				callback();
			}
		}
	}, 100);
}

19.非空验证

export function notNull(rule, value, callback) {
	if (!value) {
		return callback(new Error('必填项不可以为空'));
	}
}

网上多处搜集,侵权删。


http://www.niftyadmin.cn/n/481081.html

相关文章

实现一个markdown编辑器

95. 实现一个markdown编辑器 一、先来看一下markdown的通用格式 主标题副标题 --- # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 # 标题## 一级标题 ### 二级标题 #### 三级标题 ##### 四级标题 ###### 五级标题# 段落和换行这是一个段…

arcpy遍历工作空间中的所有要素类且将要素类复制到文件地理数据库中,点对象和几何对象的创建

前言 官方文档地址&#xff1a;https://resources.arcgis.com/zh-cn/help/main/10.2/ 授人以鱼不如授人以渔&#xff01;&#xff01; 一、遍历要素类 1、我们需要提前设置好工作空间&#xff0c;然后调用 arcpy.ListFeatureClasses() 获取工作空间中的所有要素类&#xff…

vue2项目Vant组件Dialog 弹出框异步关闭的坑

vue2项目使用vant&#xff0c;我这边是全局引入的&#xff0c;引入插件官方文档中有&#xff0c;这边就不介绍了。 安装&#xff1a;Vant 2 - Mobile UI Components built on Vue 话不多说直接说坑&#xff0c;当时写这个的时候真的给我气到了~~~ 先看一下官方文档&#xff1…

尚无忧宠物托运小程序app源码前景如何?

宠物托运市场调研分析 由于宠物托运在交通运输中并不是一个很大的类目&#xff0c;行业尚缺乏标准的流程规范与相关的监管机制&#xff0c;目前我国市面上常见的三方宠物托运公司多无正规手续&#xff0c;更有多数公司不具备相关运输资质。 如今&#xff0c;宠物经济不断崛起…

ARM Exynos4412 硬件中断和GIC管理、PWM控制 6.28

day7 1.中断 硬件中断&#xff1a;直接让外部的硬件产生中断&#xff0c;CPU获取中断源并执行异常处理流程 1.需求&#xff1a;&#xff08;中断的原理一样&#xff0c;但外设是按键&#xff09;按键产生中断&#xff0c;并在中断处理中串口发送消息 2.原理图&#xff1a;U…

2021年全国硕士研究生入学统一考试管理类专业学位联考数学试题——纯题目版

2021 年 1 月份管综初数真题 一、问题求解&#xff08;本大题共 5 小题&#xff0c;每小题 3 分&#xff0c;共 45 分&#xff09;下列每题给出 5 个选项中&#xff0c;只有一个是符合要求的&#xff0c;请在答题卡上将所选择的字母涂黑。 1.某便利店第一天售出50种商品&…

IDEA创建一个Servlet项目(tomcat10)

一、创建maven项目 org.apache.maven.archetypes:maven-archetype-webapp 二、增加Servlet依赖 tomcat9及以前依赖 <!--加入servlet依赖&#xff08;servlet的jar&#xff09;--><dependency><groupId>javax.servlet</groupId><artifactId>ja…

360集团副总裁梁志辉:大模型驱动的AI数字员工,将带来一场深刻的生产力变革丨数据猿专访...

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近日&#xff0c;在360智脑大模型应用发布会上&#xff0c;360集团创始人周鸿祎在现场创造了自己的数字分身&#xff0c;充当360公司的新闻发言人&#xff0c;其行为和思维方式可以仿真周鸿祎本人。 据悉&#xff0c;数字人…