根据中华人民共和国身份证生成规则,校验身份证
2017-07-20 16:18
330 查看
没啥说的,直接上代码,有用就拿去
HTML:
jquery.checkCard.js
HTML:
<input type="text" id="card" onblur="checkCard()" />Js:
var checkCard=function(){ var cardNo=$("#card").val(); var result=$.checkCard(cardNo); }
jquery.checkCard.js
/** * checkCard (http://blog.csdn.net/u598975767/article/details/75539374) * 基于jquery 根据中华人民共和国身份证号生成规则,校验身份证号 * @version v0.1 * @author benboerba */ $.extend({ checkCard: function(cardNo) { //省编码 var provice = { "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": "国外" }; if(!cardNo){ return false; } var ValCodeArr = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"]; var Wi = ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"]; var Ai = ""; var length = cardNo.length; // ================ 号码的长度 15位或18位 ================ if (cardNo.length != 15 && cardNo.length != 18) { alert("请输入正确的身份证号码"); return false; } // ================ 临时操作身份证号 ================ if (cardNo.length == 18) { Ai = cardNo; } else if (cardNo.length == 15) { Ai = cardNo.substring(0, 6) + "19" + cardNo.substring(6, 15); } //判断,如果输入的身份证号..如果最后一位是x或者X全部改为X cardNo = cardNo.toUpperCase(); // ================ 18位除最后以为都为数字;15位全部是数字 ================ if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(cardNo))) { alert("请输入正确的身份证号码"); return false; } // ================ 出生年月是否有效 ================ var strYear = Ai.substring(6, 10); // 年份 var strMonth = Ai.substring(10, 12); // 月份 var strDay = Ai.substring(12, 14); // 月份 if (!isDataFormat(strYear + "-" + strMonth + "-" + strDay)) { alert("请输入正确的身份证号码"); return false; } var nowDate = new Date(); var cardDate = new Date(strYear + "-" + strMonth + "-" + strDay); var currentAge = nowDate.getFullYear() - cardDate.getFullYear(); var timeDiffer = nowDate.getTime() - cardDate.getTime(); // ================ 如果出生年份与现在相差大于150年或者生日晚于当前时间 则不在有效范围 ================ if (currentAge > 150 || timeDiffer < 0) { alert("请输入正确的身份证号码"); return false; } // ================ 地区码是否有效 ================ if (provice[Ai.substring(0, 2)] == null) { alert("请输入正确的身份证号码"); return false; } // ================ 判断最后一位的值 ================ var TotalmulAiWi = 0; for (var i = 0; i < 17; i++) { TotalmulAiWi = TotalmulAiWi + parseInt(Ai.charAt(i)) * parseInt(Wi[i]); } var modValue = TotalmulAiWi % 11; if (cardNo.length == 18 && cardNo.charAt(17) != ValCodeArr[modValue]) { alert("请输入正确的身份证号码"); return false; } return true; /** * 验证日期字符串是否是YYYY-MM-DD格式 * 此正则已对年月日进行校验,包括每月天数差别(28、29、30、31),及平年闰年 */ function isDataFormat (str) { var flag = false; var regxStr = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))" + "[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?" + "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(" + "\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]" + "))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?" + "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))" + "))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$"; var regexp = new RegExp(regxStr); if (regexp.test(str)) { flag = true; } return flag; }; } });
相关文章推荐
- SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码
- 冷门规则引擎drools:从数据库中,根据drt动态生成规则并附上具体项目逻辑
- ASP.NET的路由系统:根据路由规则生成URL
- delphi根据不同图片生成不规则窗口的实现(仅限于BMP格式)
- 根据身份证号码生成生日和性别
- 大陆身份证生成规则
- 港澳台身份证校验规则和计算方法
- 身份证校验规则
- SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码
- 身份证号码校验规则
- 中华人民共和国 第二代身份证 号码规则
- 根据身份证号码生成生日和性别
- 根据业务规则分析业务对象,然后生成表结构
- ASP.NET的路由系统:根据路由规则生成URL
- MySQL 中根据规则生成随机密码
- 根据用户输入的二代身份证号码自动为其计算生成出生日期的javascript方法
- ASP.NET的路由系统:根据路由规则生成URL
- 身份证号规则及校验
- 中华人民共和国身份证号码规则
- 中华人民共和国身份证验证规则