中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

判斷輸入的參數(shù)是否是一個合格的身份證號碼

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
/**
*
* @descrition: 這個函數(shù)對輸入的參數(shù)檢查時候是合格的身份證號碼,其身份證有效性無法判斷。檢測的顆粒度可以定制。
* @param->str : 待驗證的參數(shù)
* @return : true是合格的身份證   false為不合法的身份證
* 
*/
var checkIdCard = function (num) {
    num = num.toUpperCase();
    var cityCode = {11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "內(nèi)蒙古", 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: "國外 "};
    if(!cityCode[num.substr(0,2)]){
      alert("地址編碼錯誤");
      return false;
    }
    //身份證號碼為15位或者18位,15位時全為數(shù)字,18位前17位為數(shù)字,最后一位是校驗位,可能為數(shù)字或字符X。
    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
      //alert('輸入的身份證號長度不對,或者號碼不符合規(guī)定!\n15位號碼應(yīng)全為數(shù)字,18位號碼末位可以為數(shù)字或X。');
      return false;
    }
    //校驗位按照ISO 7064:1983.MOD 11-2的規(guī)定生成,X可以認為是數(shù)字10。
    //下面分別分析出生日期和校驗位
    var len, re;
    len = num.length;
    if (len == 15) {
      re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
      var arrSplit = num.match(re);
      //檢查生日日期是否正確
      var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
      var bGoodDay;
      bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
      if (!bGoodDay) {
        //alert('輸入的身份證號里出生日期不對!');
        return false;
      }
      else {
        //將15位身份證轉(zhuǎn)成18位
        //校驗位按照ISO 7064:1983.MOD 11-2的規(guī)定生成,X可以認為是數(shù)字10。
        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 nTemp = 0, k;
        num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
        for (k = 0; k < 17; k++) {
          nTemp += num.substr(k, 1) * arrInt[k];
        }
        num += arrCh[nTemp % 11];
        return true;
      }
    }
    if (len == 18) {
      re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
      var arrSplit = num.match(re);
      //檢查生日日期是否正確
      var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
      var bGoodDay;
      bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
      if (!bGoodDay) {
        //alert(dtmBirth.getYear());
        //alert(arrSplit[2]);
        //alert('輸入的身份證號里出生日期不對!');
        return false;
      }
      else {
        //檢驗18位身份證的校驗碼是否正確。
        //校驗位按照ISO 7064:1983.MOD 11-2的規(guī)定生成,X可以認為是數(shù)字10。
        var valnum;
        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 nTemp = 0, k;
        for (k = 0; k < 17; k++) {
          nTemp += num.substr(k, 1) * arrInt[k];
        }
        valnum = arrCh[nTemp % 11];
        if (valnum != num.substr(17, 1)) {
          //alert('18位身份證的校驗碼不正確!應(yīng)該為:' + valnum);
          return false;
        }
        return true;
      }
    }
    return false;
  }

標(biāo)簽: idc

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:JavaScript創(chuàng)建和使用命名空間

下一篇:用js控制cookie(cookie操作類)