<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
</head>
<body>
手机号码:<input type="text" id="phone"/><br/>
座机号码:<input type="text" id="tel"/><br/>
电子邮箱:<input type="text" id="email"/><br/>
身份证号:<input type="text" id="card"/><br/>
邮编号码:<input type="text" id="code"/><br/>
<input type="button" value="测试" οnclick="test()"/>
<script>
function test(){
var phone = document.getElementById("phone").value;
var email = document.getElementById("email").value;
var card = document.getElementById("card").value;
var code = document.getElementById("code").value;
var tel = document.getElementById("tel").value;
var isPhone=/^(?:13\d|15\d|18\d|17\d)\d{5}(\d{3}|\*{3})$/; //手机号码验证规则
var isTel=/^((0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/; //座机验证规则
var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; //验证邮箱的正则表达式
var postcode = /^[0-9]{6}$/;// 验证邮编
if(!isPhone.test(phone)){
alert("手机号码错误!"+phone)
}
if(!postcode.test(code)){
alert("邮编错误!"+code)
}
if(!reg.test(email)){
alert("邮箱错误!"+email)
}
if(!isTel.test(tel)){
alert("座机错误!"+tel)
}
//身份证校验
var str = ValidateIdCard(card);
alert(str);
}
//验证身份证
function ValidateIdCard(sId){
var aCity = { 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 iSum = 0;
//身份证 基本验证(数字或数字+字母)
var reg = /(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
//判断是否是有效数字或者数字+X(x)
if (!reg.test(sId)){ return 'Error:非法证号1';}
sId = sId.replace(/x$/i, "a");
//验证省份
if (aCity[parseInt(sId.substr(0, 2))] == null) return "Error:非法地区";
//获取用户输入的年月日
sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));
//将用户填写的年月日转换为时间对象
var d = new Date(sBirthday.replace(/-/g, "/"))
//匹配用户输入的年月日 与 时间对象的年月日 (主要防止用户输入的年月日是无效的:1888-55-77)
if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return "Error:非法生日";
//
for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11)
if (iSum % 11 != 1) return "Error:非法证号";
return aCity[parseInt(sId.substr(0, 2))] + "," + sBirthday + "," + (sId.substr(16, 1) % 2 ? "男" : "女")
}
</script>
</body>
</html>
此方法借鉴网上各位大神,然后添加自己的思路和解释,特此分享出来!
JS|jQuery 正则校验 电话、邮箱、手机号码、邮编、身份证号码
最新推荐文章于 2021-08-12 07:29:27 发布