看程式前先來了解下身份證號的構成:身份證號分為兩種,舊的為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位編碼規則 ...
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 ...