function checkIDCard(idcode){ // 加权因子 varweight_factor= [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; // 校验码 varcheck_code= ['1','0','X','9','8','7','6','5','4','3','2']; varcode= idcode +""; varlast= idcode[17];//最后一位 varseventeen= code.substring(0,17); // ISO 7064:1983.MOD 11-2 // 判断最后一位校验码是否正确 vararr= seventeen.split(""); varlen= arr.length; varnum= 0; for(vari= 0; i < len; i++){ num= num + arr[i] * weight_factor[i]; } // 获取余数 varresisue= num%11; varlast_no= check_code[resisue]; // 格式的正则 varidcard_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])$/; // 判断格式是否正确 varformat= idcard_patter.test(idcode); // 返回验证结果,校验码和格式同时正确才算是合法的身份证号码 returnlast=== last_no && format ? true : false; }