/*
*身份證校驗方法(支持18位)
*17位數(shù)字和1位校驗碼:6位地址碼數(shù)字(前6位),8位生日數(shù)字(第7位到14位),3位出生時間順序碼(15位到17位),1位校驗碼(第18位數(shù))
*17位數(shù)字本體碼加權(quán)求和公式 S = Sum(Ai * Wi), i = 0, , 16 ,先對前17位數(shù)字的權(quán)求和;
*Ai:表示第i位置上的身份證號碼數(shù)字值 Wi:表示第i位置上的加權(quán)因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2;
*計算模 Y = mod(S, 11);
*通過模得到對應(yīng)的校驗碼 Y: 0 1 2 3 4 5 6 7 8 9 10 校驗碼: 1 0 X 9 8 7 6 5 4 3 2
*/
private function isIdCard(ss:String):Boolean{
var paritybit:Array = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
var power_list:Array = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var s:String = ss.toUpperCase().toString();
var power:Number = 0;
for(var i:int=0;i<s.length;i++){
if(i==s.length-1 && s.charAt(i)=="X"){
break;
}
if(s.charAt(i)<'0' || s.charAt(i)>'9'){
return false;
}
if(i<s.length-1){
power += Number(s.charAt(i)) * power_list[i];
}
}
var date:Date = new Date();
var year:Number = Number(s.substring(6,10));
if(year<1900 || year>date.getFullYear()){
return false;
}
var month:Number = Number(s.substring(10,12));
if(month<1 || month>12){
return false;
}
var day:Number = Number(s.substring(12,14));
if(day<1 || day>31){
return false;
}
return s.charAt(s.length - 1) == paritybit[power % 11];
}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。