1 function checkCardId(socialNo){ 2 3 if(socialNo == "") 4 { 5 alert("输入身份证号码不能为空!"); 6 return (false); 7 } 8 9 if (socialNo.length != 15 && socialNo.length != 18) 10 { 11 alert("输入身份证号码格式不正确!"); 12 return (false); 13 } 14 15 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:"国外"}; 16 17 if(area[parseInt(socialNo.substr(0,2))]==null) { 18 alert("身份证号码不正确(地区非法)!"); 19 return (false); 20 } 21 22 if (socialNo.length == 15) 23 { 24 pattern= /^\d{15}$/; 25 if (pattern.exec(socialNo)==null){ 26 alert("15位身份证号码必须为数字!"); 27 return (false); 28 } 29 var birth = parseInt("19" + socialNo.substr(6,2)); 30 var month = socialNo.substr(8,2); 31 var day = parseInt(socialNo.substr(10,2)); 32 switch(month) { 33 case \'01\': 34 case \'03\': 35 case \'05\': 36 case \'07\': 37 case \'08\': 38 case \'10\': 39 case \'12\': 40 if(day>31) { 41 alert(\'输入身份证号码不格式正确!\'); 42 return false; 43 } 44 break; 45 case \'04\': 46 case \'06\': 47 case \'09\': 48 case \'11\': 49 if(day>30) { 50 alert(\'输入身份证号码不格式正确!\'); 51 return false; 52 } 53 break; 54 case \'02\': 55 if((birth % 4 == 0 && birth % 100 != 0) || birth % 400 == 0) { 56 if(day>29) { 57 alert(\'输入身份证号码不格式正确!\'); 58 return false; 59 } 60 } else { 61 if(day>28) { 62 alert(\'输入身份证号码不格式正确!\'); 63 return false; 64 } 65 } 66 break; 67 default: 68 alert(\'输入身份证号码不格式正确!\'); 69 return false; 70 } 71 var nowYear = new Date().getYear(); 72 if(nowYear - parseInt(birth)<15 || nowYear - parseInt(birth)>100) { 73 alert(\'输入身份证号码不格式正确!\'); 74 return false; 75 } 76 return (true); 77 } 78 79 var Wi = new Array( 80 7,9,10,5,8,4,2,1,6, 81 3,7,9,10,5,8,4,2,1 82 ); 83 var lSum = 0; 84 var nNum = 0; 85 var nCheckSum = 0; 86 87 for (i = 0; i < 17; ++i) 88 { 89 90 91 if ( socialNo.charAt(i) < \'0\' || socialNo.charAt(i) > \'9\' ) 92 { 93 alert("输入身份证号码格式不正确!"); 94 return (false); 95 } 96 else 97 { 98 nNum = socialNo.charAt(i) - \'0\'; 99 } 100 lSum += nNum * Wi[i]; 101 } 102 103 104 if( socialNo.charAt(17) == \'X\' || socialNo.charAt(17) == \'x\') 105 { 106 lSum += 10*Wi[17]; 107 } 108 else if ( socialNo.charAt(17) < \'0\' || socialNo.charAt(17) > \'9\' ) 109 { 110 alert("输入身份证号码格式不正确!"); 111 return (false); 112 } 113 else 114 { 115 lSum += ( socialNo.charAt(17) - \'0\' ) * Wi[17]; 116 } 117 118 119 120 if ( (lSum % 11) == 1 ) 121 { 122 return true; 123 } 124 else 125 { 126 alert("输入身份证号码格式不正确!"); 127 return (false); 128 } 129 130 }