解析ID番号

// 形式のID番号や年齢分析
エクスポート関数authenticationAccount(IDNUM){
   CONSTシティ= {
     11' 北京' 12' 天津' 13' 河北' 14' 山西' 15' 内モンゴルを' 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外国 
  }。
  letのヒント = ' 検証が成功を' ; 
  LET isRight = trueに
  セックスせ = '' ; 
  せ年齢 = 0 ; 
  LETコード = [];
   IF(!== idNum.length 18である){ 
    ヒント = ' 不正な形式のID番号' ; 
    isRight = falseに; 
  } そう IF(シティ[idNum.substr(!02 )]){ 
    ヒント = ' アドレスコードエラー' ; 
    isRight = falseに; 
  } {
     // 18は、最後の1ビットのIDパリティを確認するために必要とされる 
    コード= idNum.split('' );
     // (MOD 11)[シグマ(のWi×AI)
     // 重み係数
    のconst因子= [ 7910584216379105842];
    //校验位
    CONSTパリティ= [ 10' X '98765432 ]。
    聞かせて合計 = 0 ; 
    聞かせてAI = 0 ; 
    聞かせてのwi = 0 ;
    以下のための(iは=せ0 ; iが< 17 ; iが++ ){ 
      AI = コード[I]; 
      Wi = 因子[I]; 
      SUM + AI * = のWi; 
    } 
    // VAR最終パリティ= [SUM%11。]; 
    IF(パリティ[SUM%。11 [!] .ToString()==コード。17 ] .toString()){ 
      ヒント = " 学校ビットエラーをチェック' ; 
      isRight = falseに; 
    } 

    IF (isRight){
       // ID番号解析
      CONST codeStr = idNum.toString();
       IF(のparseInt(codeStr.substr(161)、10)%2 === 1 ){
        性別 =
      } { 
        性別 = ' ' ; 
      } 
      // 获取年龄
      のconst MyDateに該当= 新しい日付();
      CONST月= myDate.getMonth()+ 1 constの日= myDate.getDate(); 
      年齢 = myDate.getFullYear() - codeStr.substring(610) - 1 CONST codeMonth =のparseInt(codeStr.substring(1012)、10 )。
      CONST codeDay =のparseInt(codeStr.substring(1214)、10 )。
      もし(codeMonth <月||(codeMonth ===月&& codeDay <= 日)){ 
        年齢 ++ ; 
      } 
    } 
  } 
  戻り{ 
    isRight、
    年齢、
    性別、
    チップ、
  }。
}

 

おすすめ

転載: www.cnblogs.com/wangyuxue/p/11468410.html