function isIDCard ( card ) { if ( card === '' ) { console. log ( '请输入身份证号,身份证号不能为空' ) ; return false ; } if ( isCardNo ( card) === false ) { console. log ( '您输入的身份证号码不正确' ) ; return false ; } if ( checkBirthday ( card) === false ) { console. log ( '您输入的身份证号码生日不正确' ) ; return false ; } if ( checkParity ( card) === false ) { console. log ( '您的身份证校验位不正确' ) ; return false ; } return true ; console. log ( 'OK' ) ;
}
function isCardNo ( card ) { var reg = / (^\d{15}$)|(^\d{17}(\d|X)$) / ; if ( reg. test ( card) === false ) { return false ; } return true ;
} ;
function checkProvince ( card, vcity ) { var province = card. substr ( 0 , 2 ) ; if ( vcity[ province] == undefined ) { return false ; } return true ;
} ;
function checkBirthday ( card ) { var len = card. length; if ( len == '15' ) { var re_fifteen = / ^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$ / ; var arr_data = card. match ( re_fifteen) ; var year = arr_data[ 2 ] ; var month = arr_data[ 3 ] ; var day = arr_data[ 4 ] ; var birthday = new Date ( '19' + year + '/' + month + '/' + day) ; return verifyBirthday ( '19' + year, month, day, birthday) ; } if ( len == '18' ) { var re_eighteen = / ^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$ / ; var arr_data = card. match ( re_eighteen) ; var year = arr_data[ 2 ] ; var month = arr_data[ 3 ] ; var day = arr_data[ 4 ] ; var birthday = new Date ( year + '/' + month + '/' + day) ; console. log ( "输出生日" , birthday) ; return verifyBirthday ( year, month, day, birthday) ; } return false ;
} ;
function verifyBirthday ( year, month, day, birthday ) { var now = new Date ( ) ; var now_year = now. getFullYear ( ) ; if ( birthday. getFullYear ( ) == year && ( birthday. getMonth ( ) + 1 ) == month && birthday. getDate ( ) == day) { var time = now_year - year; if ( time >= 0 && time <= 100 ) { return true ; } return false ; } return false ;
} ;
function checkParity ( card ) { card = changeFivteenToEighteen ( card) ; var len = card. length; if ( len == '18' ) { var arrInt = new Array ( 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 ) ; var arrCh = new Array ( '1' , '0' , 'X' , '9' , '8' , '7' , '6' , '5' , '4' , '3' , '2' ) ; var cardTemp = 0 , i, valnum; for ( i = 0 ; i < 17 ; i++ ) { cardTemp += card. substr ( i, 1 ) * arrInt[ i] ; } valnum = arrCh[ cardTemp % 11 ] ; if ( valnum == card. substr ( 17 , 1 ) ) { return true ; } return false ; } return false ;
} ;
function changeFivteenToEighteen ( card ) { if ( card. length == '15' ) { var arrInt = new Array ( 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 ) ; var arrCh = new Array ( '1' , '0' , 'X' , '9' , '8' , '7' , '6' , '5' , '4' , '3' , '2' ) ; var cardTemp = 0 , i; card = card. substr ( 0 , 6 ) + '19' + card. substr ( 6 , card. length - 6 ) ; for ( i = 0 ; i < 17 ; i++ ) { cardTemp += card. substr ( i, 1 ) * arrInt[ i] ; } card += arrCh[ cardTemp % 11 ] ; return card; } return card;
} ;