js驗證身份證號,超準確

2021-08-22 13:29:23 字數 1895 閱讀 6753

js驗證身份證號,超準確

看程式前先來了解下身份證號的構成:身份證號分為兩種,舊的為15位,新的為18位。身份證15位編碼規則:dddddd yymmdd xx p    其中 dddddd:地區碼    yymmdd: 出生年月日    xx: 順序類編碼,無法確定    p: 性別,奇數為男,偶數為女; 身份證18位編碼規則:dddddd yyyymmdd *** y    其中 dddddd:地區碼    yyyymmdd: 出生年月日     ***:順序類編碼,無法確定,奇數為男,偶數為女    y: 校驗碼,該位數值可通過前17位計算獲得,計算的公式見程式,一些需要用到的常數: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) else

if (idcard.length == 18) else

} else

}

/**

* 判斷身份證號碼為18位時最後的驗證位是否正確

* @param a_idcard 身份證號碼陣列

* @return

*/function istruevalidatecodeby18idcard(a_idcard)

for ( var i = 0; i < 17; i++)

valcodeposition = sum % 11; //

得到驗證碼所位置

if (a_idcard[17] == validecode[valcodeposition]) else

}

/**

* 驗證18位數身份證號碼中的生日是否是有效生日

* @param idcard 18位書身份證字串

* @return

*/function isvaliditybrithby18idcard(idcard18)else

}

/**

* 驗證15位數身份證號碼中的生日是否是有效生日

* @param idcard15 15位書身份證字串

* @return

*/function isvaliditybrithby15idcard(idcard15)else

}

//去掉字串頭尾空格

function trim(str)

根據身份證號對其進行性別的判定

/*

* * 通過身份證判斷是男是女

* @param idcard 15/18位身份證號碼

* @return 'female'-女、'male'-男

*/function maleorfemalbyidcard(idcard)else

}else

if(idcard.length ==18)else

}else

}

js驗證身份證號,超準確

js驗證身份證號,超準確

看程式前先來了解下身份證號的構成 身份證號分為兩種,舊的為15位,新的為18位。身份證15位編碼規則 dddddd yymmdd xx p 其中 dddddd 地區碼 yymmdd 出生年月日 xx 順序類編碼,無法確定 p 性別,奇數為男,偶數為女 身份證18位編碼規則 dddddd yyyymm...

js 身份證號驗證

function iscardid sid var isum 0 var info if d d x i.test sid return 身份證長度或格式錯誤 sid sid.replace x i,a if acity parseint sid.substr 0,2 null return 身份證...

身份證號驗證

原文 身份證號驗證 public static boolean isidnumber string idnumber 定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpression 1 9 d 18 19 20 d 0 1 9 10 11 ...