常用的表单验证Js方法,身份证、手机号码、固定电话正则验证建议收藏

平时做项目时,经常会用到很多使用频率很高的代码,一有问题都习惯性问度娘!把自己都养懒了。

/* 
表单验证
 */

// 验证手机号码
function PhoneMustBePostiveInt(phone) {
	var myreg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
	if (!myreg.test(phone)) {
		return false
	} else {
		return true;
	}
}

// 字符串必须是汉字
function textMustHanzi(text) {
	var han = /^[\u4e00-\u9fa5]+$/;
	if (!han.test(text)) {
		return false;
	};
	return true;
};

// 单位税号(单位税号为15位、18位、20位数字和大写英文字母):
function checkTaxId(taxId) {
	var regTaxNumVal = /^[A-Z0-9a-z]{15}$|^[A-Z0-9a-z]{18}$|^[A-Z0-9a-z]{20}$/;
	if (!regTaxNumVal.test(taxId)) {
		return false;
	};
	return true;
}

//验证是否是数字
function isNum(str){
	var reg = new RegExp("^[0-9]*$");
	return reg.test(str);
}

// 固定电话
function isTel(str){
	var reg = /^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
	if (!reg.test(str)) {
		return false;
	};
	return true;
}


/* 
 * 身份证号合法性验证 
 * 支持15位和18位身份证号
 * 支持地址编码、出生日期、校验位验证
 */

function IdentityCodeValid(code) {
	var city = {
		11: "北京",
		12: "天津",
		13: "河北",
		14: "山西",
		15: "内蒙古",
		21: "辽宁",
		22: "吉林",
		23: "黑龙江 ",
		31: "上海",
		32: "江苏",
		33: "浙江",
		34: "安徽",
		35: "福建",
		36: "江西",
		37: "山东",
		41: "河南",
		42: "湖北 ",
		43: "湖南",
		44: "广东",
		45: "广西",
		46: "海南",
		50: "重庆",
		51: "四川",
		52: "贵州",
		53: "云南",
		54: "西藏 ",
		61: "陕西",
		62: "甘肃",
		63: "青海",
		64: "宁夏",
		65: "新疆",
		71: "台湾",
		81: "香港",
		82: "澳门",
		91: "国外 "
	};
	var tip = "";
	var pass = true;

	if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {
		tip = "身份证号格式错误";
		pass = false;
	} else if (!city[code.substr(0, 2)]) {
		tip = "地址编码错误";
		pass = false;
	} else {
		//18位身份证需要验证最后一位校验位
		if (code.length == 18) {
			code = code.split('');
			//∑(ai×Wi)(mod 11)
			//加权因子
			var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
			//校验位
			var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
			var sum = 0;
			var ai = 0;
			var wi = 0;
			for (var i = 0; i < 17; i++) {
				ai = code[i];
				wi = factor[i];
				sum += ai * wi;
			}
			var last = parity[sum % 11];
			if (parity[sum % 11] != code[17]) {
				tip = "校验位错误";
				pass = false;
			}
		}
	}
	// if (!pass) alert(tip);
	return pass;
}


module.exports = {
	PhoneMustBePostiveInt,
	textMustHanzi,
	checkTaxId,
	isNum,
	isTel,
	IdentityCodeValid
}
发布了18 篇原创文章 · 获赞 10 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/a350110085/article/details/104952723