亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js 驗證身份證信息有效性

2019-11-20 20:53:45
字體:
來源:轉載
供稿:網友
以下是根據身份證號碼編碼規則,使用JS對其進行有效性驗證代碼

IdCard-Validate.js代碼如下:
復制代碼 代碼如下:

/**
* 身份證15位編碼規則:dddddd yymmdd xx p
* dddddd:地區碼
* yymmdd: 出生年月日
* xx: 順序類編碼,無法確定
* p: 性別,奇數為男,偶數為女
* <p />
* 身份證18位編碼規則:dddddd yyyymmdd xxx y
* dddddd:地區碼
* yyyymmdd: 出生年月日
* xxx:順序類編碼,無法確定,奇數為男,偶數為女
* y: 校驗碼,該位數值可通過前17位計算獲得
* <p />
* 18位號碼加權因子為(從右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]
* 驗證位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
* 校驗位計算公式:Y_P = mod( ∑(Ai×Wi),11 )
* i為身份證號碼從右往左數的 2...18 位; Y_P為腳丫校驗碼所在校驗碼數組位置
*
*/

var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];// 加權因子
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份證驗證位值.10代表X
function IdCardValidate(idCard) {
idCard = trim(idCard.replace(/ /g, ""));
if (idCard.length == 15) {
return isValidityBrithBy15IdCard(idCard);
} else if (idCard.length == 18) {
var a_idCard = idCard.split("");// 得到身份證數組
if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){
return true;
}else {
return false;
}
} else {
return false;
}
}
/**
* 判斷身份證號碼為18位時最后的驗證位是否正確
* @param a_idCard 身份證號碼數組
* @return
*/
function isTrueValidateCodeBy18IdCard(a_idCard) {
var sum = 0; // 聲明加權求和變量
if (a_idCard[17].toLowerCase() == 'x') {
a_idCard[17] = 10;// 將最后位為x的驗證碼替換為10方便后續操作
}
for ( var i = 0; i < 17; i++) {
sum += Wi[i] * a_idCard[i];// 加權求和
}
valCodePosition = sum % 11;// 得到驗證碼所位置
if (a_idCard[17] == ValideCode[valCodePosition]) {
return true;
} else {
return false;
}
}
/**
* 通過身份證判斷是男是女
* @param idCard 15/18位身份證號碼
* @return 'female'-女、'male'-男
*/
function maleOrFemalByIdCard(idCard){
idCard = trim(idCard.replace(/ /g, ""));// 對身份證號碼做處理。包括字符間有空格。
if(idCard.length==15){
if(idCard.substring(14,15)%2==0){
return 'female';
}else{
return 'male';
}
}else if(idCard.length ==18){
if(idCard.substring(14,17)%2==0){
return 'female';
}else{
return 'male';
}
}else{
return null;
}
// 可對傳入字符直接當作數組來處理
// if(idCard.length==15){
// alert(idCard[13]);
// if(idCard[13]%2==0){
// return 'female';
// }else{
// return 'male';
// }
// }else if(idCard.length==18){
// alert(idCard[16]);
// if(idCard[16]%2==0){
// return 'female';
// }else{
// return 'male';
// }
// }else{
// return null;
// }
}
/**
* 驗證18位數身份證號碼中的生日是否是有效生日
* @param idCard 18位書身份證字符串
* @return
*/
function isValidityBrithBy18IdCard(idCard18){
var year = idCard18.substring(6,10);
var month = idCard18.substring(10,12);
var day = idCard18.substring(12,14);
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
// 這里用getFullYear()獲取年份,避免千年蟲問題
if(temp_date.getFullYear()!=parseFloat(year)
||temp_date.getMonth()!=parseFloat(month)-1
||temp_date.getDate()!=parseFloat(day)){
return false;
}else{
return true;
}
}
/**
* 驗證15位數身份證號碼中的生日是否是有效生日
* @param idCard15 15位書身份證字符串
* @return
*/
function isValidityBrithBy15IdCard(idCard15){
var year = idCard15.substring(6,8);
var month = idCard15.substring(8,10);
var day = idCard15.substring(10,12);
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
// 對于老身份證中的你年齡則不需考慮千年蟲問題而使用getYear()方法
if(temp_date.getYear()!=parseFloat(year)
||temp_date.getMonth()!=parseFloat(month)-1
||temp_date.getDate()!=parseFloat(day)){
return false;
}else{
return true;
}
}
//去掉字符串頭尾空格
function trim(str) {
return str.replace(/(^/s*)|(/s*$)/g, "");
}

更新版本二
復制代碼 代碼如下:

function checkIdcard(num)
{
num = num.toUpperCase();
//身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最后一位是校驗位,可能為數字或字符X。
if (!(/(^/d{15}$)|(^/d{17}([0-9]|X)$)/.test(num)))
{
//alert('輸入的身份證號長度不對,或者號碼不符合規定!/n15位號碼應全為數字,18位號碼末位可以為數字或X。');
return false;
}
//校驗位按照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('輸入的身份證號里出生日期不對!');
return false;
}
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 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('輸入的身份證號里出生日期不對!');
return false;
}
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);
return false;
}
return true;
}
}
return false;
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人欧美一区二区三区黑人| 国产99久久精品一区二区 夜夜躁日日躁| 岛国av一区二区| 亚洲精品美女在线观看| 亚洲图片在线综合| 亚洲欧洲在线看| 欧美国产日韩视频| 亚洲精品狠狠操| 国产一区二区av| 91久久国产婷婷一区二区| 中文字幕日韩av| 欧美成年人在线观看| 2021国产精品视频| 在线观看91久久久久久| 久久影视电视剧免费网站| 国产亚洲视频中文字幕视频| 成人精品网站在线观看| 国产精品久久中文| 国产精品99久久99久久久二8| 欧美在线播放视频| 亚洲精品中文字幕有码专区| 国产精品96久久久久久| 亚洲肉体裸体xxxx137| 色午夜这里只有精品| 中文字幕亚洲欧美日韩在线不卡| 欧美亚洲午夜视频在线观看| 欧美特级www| 成人黄色大片在线免费观看| 成人网在线视频| 欧美精品videos| 少妇高潮久久77777| 91精品国产综合久久久久久蜜臀| 亚洲电影av在线| 国产狼人综合免费视频| 久久久视频在线| 国产精品高潮视频| 久久在线观看视频| 精品国产区一区二区三区在线观看| 亚洲精品自拍第一页| 97国产精品久久| www国产精品com| 欧美日韩国产综合视频在线观看中文| 精品亚洲一区二区三区四区五区| 69久久夜色精品国产69| 九九久久久久99精品| 久久影院资源站| 久久69精品久久久久久国产越南| 欧美在线播放视频| 国产精品欧美一区二区| 尤物99国产成人精品视频| 精品福利免费观看| 91精品久久久久久久久久另类| 成人黄色在线观看| 亚洲精品视频免费| 亚洲人午夜精品免费| 亚洲欧美在线播放| 亚洲图片在线综合| 4438全国成人免费| 久久国产精品久久久久| 91美女高潮出水| 久久成人人人人精品欧| 欧美午夜精品久久久久久浪潮| 色综合91久久精品中文字幕| xxxx性欧美| 精品久久久久久中文字幕| 少妇激情综合网| 九九热这里只有在线精品视| 久久这里只有精品视频首页| 国产精品久久999| 成人网在线视频| 久久国产精品久久久久| 日韩亚洲国产中文字幕| 国产亚洲成av人片在线观看桃| 国产精品自拍视频| 国产精品美女免费看| 成人午夜小视频| 亚洲午夜女主播在线直播| 精品女厕一区二区三区| 精品国内产的精品视频在线观看| 欧美猛交ⅹxxx乱大交视频| 亚洲成色777777女色窝| 国产精品88a∨| 精品呦交小u女在线| 久久人人爽人人爽爽久久| 欧美性极品少妇精品网站| 欧美激情免费视频| 欧美日韩在线免费| 日韩精品久久久久久久玫瑰园| 亚洲色图第三页| 欧美黄色小视频| 欧美超级乱淫片喷水| 国产视频福利一区| 奇米成人av国产一区二区三区| 91精品国产91久久久久久久久| 亚洲国产欧美一区二区丝袜黑人| 欧美区二区三区| 日韩av免费在线| 国产精品久久久久久中文字| 精品国内自产拍在线观看| 亚洲风情亚aⅴ在线发布| 国产在线播放91| 欧美日韩国产成人| 国产成人啪精品视频免费网| 久久99国产精品自在自在app| 久久精品国产91精品亚洲| 一区二区三区动漫| 久久黄色av网站| 亚洲大尺度美女在线| 亚洲影影院av| 久久久精品2019中文字幕神马| 久久99亚洲精品| 久久久女人电视剧免费播放下载| 午夜欧美不卡精品aaaaa| 欧美日韩在线另类| 国产精品扒开腿做爽爽爽男男| 国产精品视频免费在线观看| 精品一区二区三区四区在线| 亚洲欧美激情四射在线日| 国产精品pans私拍| 黑人极品videos精品欧美裸| 欧美电影免费观看高清完整| 欧美激情视频一区| 97国产精品视频| 欧美xxxx18国产| 国产成人精品久久二区二区91| 国产精品入口日韩视频大尺度| 亚洲欧美激情另类校园| 日韩视频免费中文字幕| 97在线视频国产| 夜夜嗨av一区二区三区四区| 亚洲精品自在久久| 欧美国产日韩视频| 国产精品久久久久久久久久尿| 日韩美女写真福利在线观看| 欧美日韩另类字幕中文| 91中文在线视频| 欧美巨大黑人极品精男| 精品亚洲aⅴ在线观看| 久久精品99久久香蕉国产色戒| 黑人巨大精品欧美一区二区三区| 欧美极品第一页| 国产精品极品在线| 久久69精品久久久久久国产越南| 欧美日韩亚洲视频| 国产小视频国产精品| 韩国三级电影久久久久久| 国语自产精品视频在免费| 亚洲精品久久久久久久久久久久久| 日韩精品欧美激情| 色哟哟网站入口亚洲精品| 这里只有精品丝袜| 亚洲国产毛片完整版| 日韩电影免费观看在线观看| 亚洲精品之草原avav久久| 日韩av在线最新| 成人免费观看网址| 青青精品视频播放| 亚洲精品女av网站| 久久夜色撩人精品| 久久色精品视频| 日韩精品中文字幕有码专区| 国产成人一区二区三区电影| 国产精品白丝av嫩草影院| 国内免费久久久久久久久久久|