Web前端常用的表单校验正则表达式

表单常用的正则表达式

一、姓名

/^[\u4e00-\u9fa5]{2,4}$/    //2-4个中文字符正则

二、手机号

/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/

三、座机号码

/^(0\d{2,3})-?(\d{7,8})$/

四、电子邮箱

/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/

五、身份证号码

这里分为18为和15位娇校验
1、18位校验

/^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/

2、15位校验

/^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/

六、QQ号

/^[1-9][0-9]\d{4,9}$/

1、废话不多说,我们直接上代码(以校验身份证来举例)
封装身份证号码15位和18位正则校验规则

// 校验15位和18位身份证号码
var powers = ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"];
var parityBit = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
checkIdCardNo = function (idCard) {
	// 获取身份证号码位数
	var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCard);
	if (!check) return false;
	//判断长度为15位或18位
	if (idCard.length == 15) {
		return check15IdCard(idCard);
	} else if (idCard.length == 18) {
		return check18IdCard(idCard);
	} else {
		return false;
	}
}
check15IdCard = function (idCard) {
	//15位身份证号码的基本校验
	var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCard);
	if (!check) return false;
	//校验日期码
	return checkBirthDayCode(birDayCode);
}
check18IdCard = function (idCard) {
	//18位身份证号码的基本格式校验
	var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(
		idCard);
	if (!check) return false;
	//验证校检码
	return checkParityBit(idCard);
}
checkParityBit = function (idCard) {
	var parityBit = idCard.charAt(17).toUpperCase();
	if (getParityBit(idCard) == parityBit) {
		return true;
	} else {
		return false;
	}
}
checkBirthDayCode = function (birDayCode) {
	var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode);
	if (!check) return false;
	var yyyy = parseInt(birDayCode.substring(0, 4), 10);
	var mm = parseInt(birDayCode.substring(4, 6), 10);
	var dd = parseInt(birDayCode.substring(6), 10);
	var xdata = new Date(yyyy, mm - 1, dd);
	if (xdata > new Date()) {
		return false; //生日不能大于当前日期
	} else if ((xdata.getFullYear() == yyyy) && (xdata.getMonth() == mm - 1) && (xdata.getDate() == dd)) {
		return true;
	} else {
		return false;
	}
}
getParityBit = function (idCard) {
	var id17 = idCard.substring(0, 17);
	/*加权 */
	var power = 0;
	for (var i = 0; i < 17; i++) {
		power += parseInt(id17.charAt(i), 10) * parseInt(powers[i]);
	}
	/*取模*/
	var mod = power % 11;
	return parityBit[mod];
}

未完待续~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值