JavaScript實(shí)現(xiàn)身份證驗(yàn)證代碼實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)身法證驗(yàn)證代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
function isIdCardNo(num) {
num = num.toUpperCase(); //身份證號(hào)碼為15位或者18位,15位時(shí)全為數(shù)字,18位前17位為數(shù)字,最后一位是校驗(yàn)位,可能為數(shù)字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
//alert('輸入的身份證號(hào)長(zhǎng)度不對(duì),或者號(hào)碼不符合規(guī)定!\n15位號(hào)碼應(yīng)全為數(shù)字,18位號(hào)碼末位可以為數(shù)字或X。');
//alert('身份證號(hào)長(zhǎng)度不正確或不符合規(guī)定!');
return false;
}
//驗(yàn)證前2位,城市符合
var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內(nèi)蒙古",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:"臺(tái)灣",81:"香港",82:"澳門",91:"國(guó)外"};
if(aCity[parseInt(num.substr(0,2))]==null){
//alert('身份證號(hào)不正確或不符合規(guī)定!');
return false;
}
//alert('城市:'+aCity[parseInt(num.substr(0,2))]);
//下面分別分析出生日期和校驗(yàn)位
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('身份證號(hào)的出生日期不對(duì)!');
return false;
} else { //將15位身份證轉(zhuǎn)成18位 //校驗(yàn)位按照ISO 7064:1983.MOD 11-2的規(guī)定生成,X可以認(rèn)為是數(shù)字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 true;
}
}
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('身份證號(hào)的出生日期不對(duì)!');
return false;
}
else { //檢驗(yàn)18位身份證的校驗(yàn)碼是否正確。 //校驗(yàn)位按照ISO 7064:1983.MOD 11-2的規(guī)定生成,X可以認(rèn)為是數(shù)字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位身份證的校驗(yàn)碼不正確!應(yīng)該為:' + valnum);
//alert('18位身份證號(hào)的校驗(yàn)碼不正確!');
return false;
}
return true;
}
}
return false;
};
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何讓div span等元素能響應(yīng)鍵盤事件操作指南
在我這幾天的工作中遇到了一個(gè)問(wèn)題,我有一個(gè)可編輯的div,并且在DIV里面還有一個(gè)可編輯的span,我想要讓span能響應(yīng)鍵盤事,想實(shí)現(xiàn)這種效果,應(yīng)該如何實(shí)踐呢2012-11-11
JS中浮點(diǎn)數(shù)精度問(wèn)題的分析與解決方法
在js中我們有時(shí)會(huì)遇到計(jì)算,通過(guò)加減乘除處理某些業(yè)務(wù),那么這時(shí)候如果不做任何處理,就會(huì)出現(xiàn)如下典型的精度丟失問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于JS中浮點(diǎn)數(shù)精度問(wèn)題的分析與解決方法,需要的朋友可以參考下2022-04-04
ichart.js繪制虛線、平均分虛線效果的實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇ichart.js繪制虛線、平均分虛線效果的實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05
IE6瀏覽器中window.location.href無(wú)效的解決方法
這篇文章主要介紹了IE6瀏覽器中window.location.href無(wú)效的解決方法,給出了正確與錯(cuò)誤的實(shí)例對(duì)比,分析跳轉(zhuǎn)無(wú)效的原因與解決方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11
layui 監(jiān)聽(tīng)select選擇 獲取當(dāng)前select的ID名稱方法
今天小編就為大家分享一篇layui 監(jiān)聽(tīng)select選擇 獲取當(dāng)前select的ID名稱方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
Next.js服務(wù)端渲染超時(shí)導(dǎo)致生產(chǎn)事故的問(wèn)題排查和解決辦法
Next.js是一個(gè)基于React的開(kāi)源框架,用于構(gòu)建服務(wù)端渲染(SSR)的Web應(yīng)用程序,它簡(jiǎn)化了許多復(fù)雜的配置,讓開(kāi)發(fā)者可以專注于編寫應(yīng)用邏輯而不是基礎(chǔ)設(shè)施,前幾天公司平臺(tái)首頁(yè)崩潰了 504 Time-out,這里記錄一下問(wèn)題排查和解決的過(guò)程,需要的朋友可以參考下2025-03-03
JavaScript淡入淡出漸變簡(jiǎn)單實(shí)例
這篇文章主要介紹了JavaScript淡入淡出漸變實(shí)現(xiàn)方法,涉及javascript頁(yè)面元素樣式的漸變操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08

