function identityValidate(idcode) {
// 加權(quán)因子
var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
// 校驗(yàn)碼
var check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
var code = idcode + "";
var last = idcode[17];//最后一位
var seventeen = code.substring(0, 17);
// ISO 7064:1983.MOD 11-2
// 判斷最后一位校驗(yàn)碼是否正確
var arr = seventeen.split("");
var len = arr.length;
var num = 0;
for (var i = 0; i < len; i++) {
num = num + arr[i] * weight_factor[i];
}
// 獲取余數(shù)
var resisue = num % 11;
var last_no = check_code[resisue];
// 格式的正則
// 正則思路
/*
第一位不可能是0
第二位到第六位可以是0-9
第七位到第十位是年份,所以七八位為19或者20
十一位和十二位是月份,這兩位是01-12之間的數(shù)值
十三位和十四位是日期,是從01-31之間的數(shù)值
十五,十六,十七都是數(shù)字0-9
十八位可能是數(shù)字0-9,也可能是X
*/
var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
// 判斷格式是否正確
var format = idcard_patter.test(idcode);
// 返回驗(yàn)證結(jié)果,校驗(yàn)碼和格式同時正確才算是合法的身份證號碼
return last === last_no && format ? true : false;
}
js 驗(yàn)證身份證號
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- js驗(yàn)證真實(shí)姓名與身份證號/手機(jī)號 Intro 最近的項(xiàng)目中用的需要調(diào)用實(shí)名認(rèn)證的接口,實(shí)名認(rèn)證接口價格相比短信而...
- 主要實(shí)現(xiàn) 1、針對18位、15位身份證號碼進(jìn)行校驗(yàn) 2、不區(qū)分xX大小寫 3、把15位的身份證轉(zhuǎn)換成18位的身份證...
- 正則在做驗(yàn)證的時候經(jīng)常用到,所以這里整理了幾個驗(yàn)證的方法,供有需要的朋友使用。直接上代碼