因為要做靜態地址配置的js校驗,找了好多資料發現網上都是關于ip,mask的有效性檢查,沒有ip,submask,gateway的邏輯性判斷,自己寫下代碼供需要的人參考。
普及下網關地址知識:
第一點:進行與運算1與1得1,1與0為0,0與0為0。首先把ip和子網掩碼展開
10.70.64.223        00001010 .01000110.01000000.11011111
255.255.255。0   111111111.11111111.11111111.00000000
網段就是         00001010 .01000110.01000000.00000000
然后轉換成十進制就是:10.70.64.0
第二點:IP地址與子網掩碼做與運算和網關地址與子網掩碼做與運算得到的結果應該是一致的就對了,也就是主機號一致。
我這里是先用js將ip,mask,gateway按照‘.'分隔后相與做判斷的。
第三點:js的按位與運算
result = 【整數1】 & 【整數1】
& 對兩個 32 位表達式的每一個位執行按位“與”運算。 如果兩個位均為 1,則結果是 1。 否則,結果為 0。
分享js針對ip地址、子網掩碼、網關的邏輯性判斷詳細代碼
function checkIP(ip) {  obj=ip; var exp=/^(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])$/;  var reg = obj.match(exp);  if(reg==null)  {   return false;//不合法 }  else  {   return true; //合法 } } function checkMask(mask) {  obj=mask;  var exp=/^(254|252|248|240|224|192|128|0)/.0/.0/.0|255/.(254|252|248|240|224|192|128|0)/.0/.0|255/.255/.(254|252|248|240|224|192|128|0)/.0|255/.255/.255/.(254|252|248|240|224|192|128|0)$/;  var reg = obj.match(exp);  if(reg==null)  {    return false; //"非法" }   else  {    return true; //"合法" } }  var static_ip= document.getElementById('static_ip').value;  var static_mask= document.getElementById('static_mask').value;   var static_gw= document.getElementById('static_gw').value;    if (static_ip=='')  {   // $("#static_ip_error").css("display","block");   document.getElementById('static_ip').focus();   return false;  }else if(!checkIP(static_ip))  {   //$("#static_ip_error").css("display","none");   document.getElementById('static_ip').focus();   return false;      }     if(static_mask=='')  {    //$("#static_mask_error").css("display","block");   document.getElementById('static_mask').focus();   return false;    }else if(!checkMask(static_mask))  {   //$("#static_mask_error").css("display","none");    document.getElementById('static_mask').focus();   return false;    }      if(static_gw=='')  {    //$("#static_gw_error").css("display","block");   document.getElementById('static_gw').focus();   return false;    }else if(!checkIP(static_gw))  {   //$("#static_gw_error").css("display","none");   document.getElementById('static_gw').focus();   return false;      }   if(static_ip == static_mask || static_mask == static_gw || static_mask == static_gw) {  alert('地址輸入錯誤!');  return false; //3個地址不能相同 }  var static_ip_arr = new Array; var static_mask_arr = new Array; var static_gw_arr = new Array;   static_ip_arr = static_ip.split("."); static_mask_arr = static_mask.split("."); static_gw_arr = static_gw.split("."); var res0 = parseInt(lan_ip_arr[0]) & parseInt(static_mask_arr[0]); var res1 = parseInt(lan_ip_arr[1]) & parseInt(static_mask_arr[1]); var res2 = parseInt(lan_ip_arr[2]) & parseInt(static_mask_arr[2]); var res3 = parseInt(lan_ip_arr[3]) & parseInt(static_mask_arr[3]);  var res0_gw = parseInt(static_gw_arr[0]) & parseInt(static_mask_arr[0]); var res1_gw = parseInt(static_gw_arr[1]) & parseInt(static_mask_arr[1]); var res2_gw = parseInt(static_gw_arr[2]) & parseInt(static_mask_arr[2]); var res3_gw = parseInt(static_gw_arr[3]) & parseInt(static_mask_arr[3]);  if(res0==res0_gw && res1==res1_gw && res2==res2_gw && res3==res3_gw) {   }else{  alert('IP地址與子網掩碼、網關地址不匹配!');  return false; }js驗證IP及子網掩碼的合法性代碼分享:
function checkIP(ip) {   obj=ip;  var exp=/^(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])$/;   var reg = obj.match(exp);   if(reg==null)   {     return false;//不合法  }   else   {     return true; //合法  } } function checkMask(mask) {   obj=mask;   var exp=/^(254|252|248|240|224|192|128|0)/.0/.0/.0|255/.(254|252|248|240|224|192|128|0)/.0/.0|255/.255/.(254|252|248|240|224|192|128|0)/.0|255/.255/.255/.(254|252|248|240|224|192|128|0)$/;   var reg = obj.match(exp);   if(reg==null)   {      return false; //"非法"  }    else   {      return true; //"合法"  } }以上就是本文的全部內容,希望對大家的學習有所幫助。
新聞熱點
疑難解答