表单常用的正则表达式
一、姓名
/^[\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];
}
未完待续~