摘要:輸入的身份證號長度不對,或者號碼不符合規定校驗位按照的規定生成,可以認為是數字。檢查生日日期是否正確輸入的身份證號里出生日期不對輸入的身份證號里出生日期不對檢驗位身份證的校驗碼是否正確。
function idcardCheck(num) { var errstr=""; num=num.toString(); num = num.toUpperCase(); //身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最后一位是校驗位,可能為數字或字符X。 if (! (/(^d{15}$)|(^d{17}([0-9]|X)$)/.test(num))) { //alert("輸入的身份證號長度不對,或者號碼不符合規定! 15位號碼應全為數字,18位號碼末位可以為數字或X。"); errstr="輸入的身份證號長度不對,或者號碼不符合規定!"; return { result:false, str:errstr }; } //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 //下面分別分析出生日期和校驗位 var len, re; len = num.length; if (len == 15) { re = new RegExp(/^(d{6})(d{2})(d{2})(d{2})(d{3})$/); var arrSplit = num.match(re); //檢查生日日期是否正確 var dtmBirth = new Date("19" + arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { //alert("輸入的身份證號里出生日期不對!"); errstr="輸入的身份證號里出生日期不對!"; return { result:false, str:errstr }; } else { //將15位身份證轉成18位 //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"); var nTemp = 0, i; num = num.substr(0, 6) + "19" + num.substr(6, num.length - 6); for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } num += arrCh[nTemp % 11]; return { result:true, str:errstr }; } } if (len == 18) { re = new RegExp(/^(d{6})(d{4})(d{2})(d{2})(d{3})([0-9]|X)$/); var arrSplit = num.match(re); //檢查生日日期是否正確 var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { //alert(dtmBirth.getYear()); //alert(arrSplit[2]); //alert("輸入的身份證號里出生日期不對!"); errstr="輸入的身份證號里出生日期不對!"; return { result:false, str:errstr }; } else { //檢驗18位身份證的校驗碼是否正確。 //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"); var nTemp = 0, i; for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if (valnum != num.substr(17, 1)) { //alert("18位身份證的校驗碼不正確!應該為:" + valnum); // errstr="18位身份證的校驗碼不正確!應該為:"+valnum; errstr="身份證格式錯誤,請重新輸入!"; return { result:false, str:errstr }; } return { result:true, str:errstr }; } } errstr="輸入的身份證號不對"; return { result:false, str:errstr }; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81875.html
摘要:將加法和加上校驗位能被整除。下面分別分析出生日期和校驗位檢查生日日期是否正確輸入的身份證號里出生日期不對將位身份證轉成位校驗位按照的規定生成,可以認為是數字。校驗位按照的規定生成,可以認為是數字。表示全部為中文為不全是中文,或沒有中文。 判斷是否是合理的銀行卡卡號 //Description: 銀行卡號Luhm校驗 //Luhm校驗規則:16位銀行卡號(19位通用): // 1.將...
摘要:銀行卡驗證銀行卡驗證身份證驗證身份證號碼為位或者位,位時全為數字,位前位為數字,最后一位是校驗位,可能為數字或字符。 銀行卡驗證: /** * 銀行卡驗證 * @param {*string} str */ function isBankCard(str) { var regex = /^(998801|998802|622525|622526|435744|435745...
摘要:如果余數是,身份證的最后一位號碼就是。舉例某男性的身份證號碼是。我們要看看這個身份證是不是合法的身份證。首先我們得出前位的乘積和然后再求余最后通過對應規則就可以知道余數對應的數字是。 18位身份證號碼各位的含義 1-2位省、自治區、直轄市代碼;3-4位地級市、盟、自治州代碼;5-6位縣、縣級市、區代碼;7-14位出生年月日,比如19670401代表1967年4月1日;15-17位為順序...
摘要:校驗位按照的規定生成,可以認為是數字。如果你只需要簡單的校驗身份證號碼的話,你只需要使用我上面的正則規則進行校驗即可,如果需要嚴格校驗的話,可以使用我上面的驗證方法來進行校驗 最近公司讓我將身份證校驗改為嚴格校驗,剛開始我使用了網上找到的身份證正則校驗進行校驗: /^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[...
閱讀 3705·2021-11-22 13:52
閱讀 3602·2019-12-27 12:20
閱讀 2385·2019-08-30 15:55
閱讀 2144·2019-08-30 15:44
閱讀 2262·2019-08-30 13:16
閱讀 574·2019-08-28 18:19
閱讀 1881·2019-08-26 11:58
閱讀 3436·2019-08-26 11:47