Ext實現的身份證格式驗證程式碼

螞蟻小編發表於2017-03-16

在一般的網站,身份張號碼一般不作為一個必須的專案,因為這會涉及到安全和隱私問題,不過在某些特殊要求的網站則是必須要填寫的,所以身份證格式的驗證也是一種現實的需求。實現驗證的方式有多種,例如可以使用正規表示式實現此功能,下面分享一下使用Ext實現的身份證格式驗證程式碼。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var certCardValid = function(id){ 
  var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2]; 
  var wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; 
  var Checker = [1,9,8,7,6,5,4,3,2,1,1]; 
  var msg = ""; 
  if(id.length != 15 && id.length != 18) 
  { 
    Ext.MessageBox.alert("資訊提示","身份證號共有15位或18位。"); 
    return false; 
  } 
  var ai = id.length == 18 ?  id.substring(0,17) : id.slice(0,6) + "19" + id.slice(6,16); 
  if (!/^\/d+$/.test(ai)) 
  { 
    Ext.MessageBox.alert("資訊提示","身份證除最後一位外,必須為數字。"); 
    return false; 
  } 
  var yyyy = ai.slice(6,10); 
  var mm = ai.slice(10,12)-1;  
  var dd = ai.slice(12,14); 
  var d = new Date(yyyy,mm,dd); 
  var now = new Date(); 
  var year = d.getFullYear(); 
  var mon = d.getMonth();  
  var day = d.getDate(); 
 
  if (year != yyyy || mon != mm || day != dd) 
  { 
    Ext.MessageBox.alert("資訊提示","身份證無效。"); 
    return false; 
  } 
  for(var i = 0,ret = 0; i < 17; i++)
  { 
    ret += ai.charAt(i) * wi[i]; 
  } 
  ai += arrVerifyCode[ret %= 11]; 
  ai = ai.toUpperCase(); 
  if(id.length == 18 && id != ai)
  { 
    Ext.MessageBox.alert("資訊提示","身份證無效。"); 
    return false; 
  } 
  return true; 
};

相關文章