function CheckIDCard(StrNumber)
... {
//判断身份证号码格式函数
//公民身份号码是特征组合码,
//排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码
//身份证号码长度判断
if(StrNumber.length<15||StrNumber.length==16||StrNumber.length==17||StrNumber.length>18)
...{
CheckIDCard =false;
}
//身份证号码最后一位可能是超过100岁老年人的X
//所以排除掉最后一位数字进行数字格式测试
//全部换算成17位数字格式
var Ai;
if(StrNumber.length==18)
...{
Ai = StrNumber.substring(0,17);
}
else
...{
Ai =StrNumber.substring(0,6)+"19"+StrNumber.substring(6,9);
}
if(IsNumeric(Ai)==false)
...{
return false;
}
var strYear,strMonth,strDay,strBirthDay;
strYear = parseInt(Ai.substring(Ai,6,4));
strMonth = parseInt(Ai.substring(Ai,10,2)) ;
strDay = parseInt(Ai.substring(Ai,12,2));
if (IsValidDate(strYear,strMonth,strDay)==false)
...{
return false;
}
var arrVerifyCode = new Array("1","0","x","9","8","7","6","5","4","3","2");
var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
var i,TotalmulAiWi=0;
for (i=0; loop<16;loop++)
...{
TotalmulAiWi = TotalmulAiWi + parseInt(Ai.substring(i+1,1)) * Wi[i];
}
var modValue =TotalmulAiWi%11 ;
var strVerifyCode = arrVerifyCode[modValue];
Ai = Ai & strVerifyCode;
if((StrNumber.length== 18)&&(StrNumber!=Ai))
...{
return false;
}
}
function IsNumeric(oNum)
... {
if(!oNum) return false;
var strP=/^d+(.d+)?$/;
if(!strP.test(oNum)) return false;
try...{
if(parseFloat(oNum)!=oNum) return false;
}
catch(ex)
...{
return false;
}
return true;
}
function IsValidDate(psYear, psMonth, psDay)
... {
if(psYear==null || psMonth==null || psDay==null)
...{
return false;
}
var sYear = new String(psYear);
var sMonth = new String(psMonth);
var sDay = new String(psDay);
if(IsValidYear(sYear)==false)
...{
return false;
}
if(IsValidMonth(sMonth)==false)
...{
return false;
}
if(IsValidDay(sDay)==false)
...{
return false;
}
var nYear = parseInt(sYear, 10);
var nMonth = parseInt(sMonth, 10);
var nDay = parseInt(sDay, 10);
if(sYear=="" && sMonth=="" && sDay=="")
...{
return true;
}
if(sYear=="" || sMonth=="" || sDay=="")
...{
return false;
}
if(nMonth < 1 || 12 < nMonth)
...{
return false;
}
if(nDay < 1 || 31 < nDay)
...{
return false;
}
if(nMonth == 2)
...{
if((nYear % 400 == 0) || (nYear % 4 == 0) && (nYear % 100 != 0))
...{
if((nDay < 1) || (nDay > 29))
...{
return false;
}
}
else
...{
if((nDay < 1) || (nDay > 28))
...{
return false;
}
}
}
else if((nMonth == 1) ||
(nMonth == 3) ||
(nMonth == 5) ||
(nMonth == 7) ||
(nMonth == 8) ||
(nMonth == 10) ||
(nMonth == 12))
...{
if((nDay < 1) || (31 < nDay))
...{
return false;
}
}
else
...{
if((nDay < 1) || (30 < nDay))
...{
return false;
}
}
return true;
}