身份证校验

function checkIDCard(id) {
  var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/
  if (!format.test(id)) {
    return { 'status': 0, 'msg': '身份证号码不合规' }
  }
  var year = id.substr(6, 4)
  var month = id.substr(10, 2)
  var date = id.substr(12, 2)
  var time = Date.parse(month + '-' + date + '-' + year)
  var now_time = Date.parse(new Date())
  var dates = (new Date(year, month, 0)).getDate()
  if (time > now_time || date > dates) {
    return { 'status': 0, 'msg': '出生日期不合规' }
  }
  // 身份证校验位
  var c = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
  var b = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
  var id_array = id.split('')
  var sum = 0
  for (var k = 0; k < 17; k++) {
    sum += parseInt(id_array[k]) * parseInt(c[k])
  }
  if (id_array[17].toUpperCase() !== b[sum % 11].toUpperCase()) {
    return { 'status': 0, 'msg': '身份证校验位不正确,校验位应该是' + b[sum % 11].toUpperCase() }
  }
  return { 'status': 1, 'msg': '校验通过' }
}

15位转18位身份证号

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;
}

校验日期

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)
    {
        //判断年份的范围(0岁到100岁之间)
        var time = now_year - year;
        if(time >= 0 && time <= 100)
        {
            return true;
        }
        return false;
    }
    return false;
} 
检查生日是否正确
function checkBirthday(card){
    var len = card.length;
    //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
    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);
    }
    //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
    if(len == '18'){
        var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X|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);
        return verifyBirthday(year,month,day,birthday);
    }
    return false;
};

取身份证前两位,校验省份

function checkProvince(card,vcity){
    var province = card.substr(0,2);
    if(vcity[province] == undefined){
        return false;
    }
    return true;
};

  

 

posted @ 2020-09-14 10:28  蛋Mrs炒饭  阅读(191)  评论(0编辑  收藏  举报