首页 > 代码库 > 身份证校验
身份证校验
1 <html> 2 3 <head> 4 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 7 <title>身份证号码验证</title> 8 9 <script type="text/javascript"> 10 11 //校验身份证号码 12 13 var yyyy; 14 15 var mm; 16 17 var dd; 18 19 var birthday; 20 21 var address; 22 23 var sex; 24 25 function CheckValue(idCard){ 26 27 //是否输入 28 29 var id=idCard; 30 31 var id_length=id.length; 32 33 if (id_length==0){ 34 35 alert("请输入身份证号码!"); 36 37 return false; 38 39 } 40 41 //长度校验 42 43 if (id_length!=15 && id_length!=18){ 44 45 alert("身份证号长度应为15位或18位!"); 46 47 return false; 48 49 } 50 51 //判断是否纯数字 52 53 if(isNaN(idCard)) 54 55 { 56 57 alert("含有非法字符!"); 58 59 return false; 60 61 } 62 63 //地区校验 64 65 // 66 67 var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江", 31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北", 43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏", 61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} 68 69 if(area[parseInt(idCard.toString().substr(0,2))]==null) 70 71 { 72 73 alert(‘身份证地区非法!‘) 74 75 return false; 76 77 } 78 79 else 80 81 address = area[parseInt(idCard.toString().substr(0,2))]; 82 83 //日期校验 84 85 if (id_length==15){ 86 87 yyyy="19"+id.toString().substring(6,8); 88 89 mm=id.toString().substring(8,10); 90 91 dd=id.toString().substring(10,12); 92 93 if (mm>12 || mm<=0){ 94 95 alert("输入身份证号,月份非法!"); 96 97 return false; 98 99 } 100 101 if (dd>31 || dd<=0){ 102 103 alert("输入身份证号,日期非法!"); 104 105 return false; 106 107 } 108 109 birthday=yyyy+ "-" +mm+ "-" +dd; 110 111 if ("13579".indexOf(id.toString().substring(14,15))!=-1){ 112 113 sex="女"; 114 115 }else{ 116 117 sex="男"; 118 119 } 120 121 }else if (id_length==18){ 122 123 yyyy=id.toString().substring(6,10); 124 125 if (yyyy>2200 || yyyy<1900){ 126 127 alert("输入身份证号,年度非法!"); 128 129 return false; 130 131 } 132 133 mm=id.toString().substring(10,12); 134 135 if (mm>12 || mm<=0){ 136 137 alert("输入身份证号,月份非法!"); 138 139 return false; 140 141 } 142 143 dd=id.toString().substring(12,14); 144 145 if (dd>31 || dd<=0){ 146 147 alert("输入身份证号,日期非法!"); 148 149 return false; 150 151 } 152 153 //校验位校验 154 155 if (!isChinaIDCard(idCard)) 156 157 { 158 159 return false ; 160 161 } 162 163 birthday=yyyy+ "-" +mm+ "-" +dd; 164 165 if ("13579".indexOf(id.toString().substring(14,15))!=-1){ 166 167 sex="女"; 168 169 }else{ 170 171 sex="男"; 172 173 } 174 175 } 176 177 return true; 178 179 } 180 181 //18位校验码校验 182 183 function isChinaIDCard(StrNo) 184 185 { 186 187 StrNo = StrNo.toString(); 188 189 var a, b, c; 190 191 a = parseInt(StrNo.substr(0, 1)) * 7+parseInt(StrNo.substr(1, 1)) * 9 +parseInt(StrNo.substr(2, 1)) * 10; 192 193 a = a + parseInt(StrNo.substr(3, 1)) * 5+parseInt(StrNo.substr(4, 1)) * 8+parseInt(StrNo.substr(5, 1)) * 4; 194 195 a = a + parseInt(StrNo.substr(6, 1)) * 2+parseInt(StrNo.substr(7, 1)) * 1+parseInt(StrNo.substr(8, 1)) * 6; 196 197 a = a + parseInt(StrNo.substr(9, 1)) * 3+parseInt(StrNo.substr(10, 1)) * 7+parseInt(StrNo.substr(11, 1)) * 9; 198 199 a = a + parseInt(StrNo.substr(12, 1)) * 10+parseInt(StrNo.substr(13, 1)) * 5+parseInt(StrNo.substr(14, 1)) * 8; 200 201 a = a + parseInt(StrNo.substr(15, 1)) * 4+parseInt(StrNo.substr(16, 1)) * 2; 202 203 b = a % 11; 204 205 if (b == 2) 206 207 //最后一位为校验位 208 209 { 210 211 c = StrNo.substr(17, 1).toUpperCase(); //转为大写X 212 213 } 214 215 else 216 217 { 218 219 c = parseInt(StrNo.substr(17, 1)); 220 221 } 222 223 switch (b) 224 225 { 226 227 case 0: 228 229 if (c != 1) 230 231 { 232 233 alert("身份证号码校验位错:最后一位应该为:1"); 234 235 return false; 236 237 } 238 239 break; 240 241 case 1: 242 243 if (c != 0) 244 245 { 246 247 alert("身份证号码校验位错:最后一位应该为:0"); 248 249 return false; 250 251 } 252 253 break; 254 255 case 2: 256 257 if (c != "X") 258 259 { 260 261 alert("身份证号码校验位错:最后一位应该为:X"); 262 263 return false; 264 265 } 266 267 break; 268 269 case 3: 270 271 if (c != 9) 272 273 { 274 275 alert("身份证号码校验位错:最后一位应该为:9"); 276 277 return false; 278 279 } 280 281 break; 282 283 case 4: 284 285 if (c != 8) 286 287 { 288 289 alert("身份证号码校验位错:最后一位应该为:8"); 290 291 return false; 292 293 } 294 295 break; 296 297 case 5: 298 299 if (c != 7) 300 301 { 302 303 alert("身份证号码校验位错:最后一位应该为:7"); 304 305 return false; 306 307 } 308 309 break; 310 311 case 6: 312 313 if (c != 6) 314 315 { 316 317 alert("身份证号码校验位错:最后一位应该为:6"); 318 319 return false; 320 321 } 322 323 break; 324 325 case 7: 326 327 if (c != 5) 328 329 { 330 331 alert("身份证号码校验位错:最后一位应该为:5"); 332 333 return false; 334 335 } 336 337 break; 338 339 case 8: 340 341 if (c != 4) 342 343 { 344 345 alert("身份证号码校验位错:最后一位应该为:4"); 346 347 return false; 348 349 } 350 351 break; 352 353 case 9: 354 355 if (c != 3) 356 357 { 358 359 alert("身份证号码校验位错:最后一位应该为:3"); 360 361 return false; 362 363 } 364 365 break; 366 367 case 10: 368 369 if (c != 2) 370 371 { 372 373 alert("身份证号码校验位错:最后一位应该为:2"); 374 375 return false 376 377 } 378 379 } 380 381 return true ; 382 383 } 384 385 //响应单击事件 386 387 function myclick() 388 389 { 390 391 var strinput=document.getElementById("idCard").value ; 392 393 if(CheckValue(strinput)) 394 395 { 396 397 alert(‘输入正确!请核对您的信息:出生日期:‘+birthday+‘.性别:‘+sex+‘.出生地:‘+address); 398 399 } 400 401 } 402 403 </script> 404 405 </head> 406 407 <body> 408 409 输入身份证号码: 410 411 <input name="idCard" type="text" maxlength="25" id="idCard"/> 412 413 <input name="myButton" type="button" id="myButton" onclick="myclick()" value="确定" /> 414 415 </body> 416 417 </html>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。