JS|jQuery 正则校验 电话、邮箱、手机号码、邮编、身份证号码

<!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>
此方法借鉴网上各位大神,然后添加自己的思路和解释,特此分享出来!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值