js針對ip地址、子網(wǎng)掩碼、網(wǎng)關(guān)的邏輯性判斷
因?yàn)橐鲮o態(tài)地址配置的js校驗(yàn),找了好多資料發(fā)現(xiàn)網(wǎng)上都是關(guān)于ip,mask的有效性檢查,沒有ip,submask,gateway的邏輯性判斷,自己寫下代碼供需要的人參考。
普及下網(wǎng)關(guān)地址知識:
第一點(diǎn):進(jìn)行與運(yùn)算1與1得1,1與0為0,0與0為0。首先把ip和子網(wǎng)掩碼展開
10.70.64.223 00001010 .01000110.01000000.11011111
255.255.255。0 111111111.11111111.11111111.00000000
網(wǎng)段就是 00001010 .01000110.01000000.00000000
然后轉(zhuǎn)換成十進(jìn)制就是:10.70.64.0
第二點(diǎn):IP地址與子網(wǎng)掩碼做與運(yùn)算和網(wǎng)關(guān)地址與子網(wǎng)掩碼做與運(yùn)算得到的結(jié)果應(yīng)該是一致的就對了,也就是主機(jī)號一致。
我這里是先用js將ip,mask,gateway按照‘.'分隔后相與做判斷的。
第三點(diǎn):js的按位與運(yùn)算
result = 【整數(shù)1】 & 【整數(shù)1】
& 對兩個 32 位表達(dá)式的每一個位執(zhí)行按位“與”運(yùn)算。 如果兩個位均為 1,則結(jié)果是 1。 否則,結(jié)果為 0。
分享js針對ip地址、子網(wǎng)掩碼、網(wǎng)關(guān)的邏輯性判斷詳細(xì)代碼
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地址與子網(wǎng)掩碼、網(wǎng)關(guān)地址不匹配!');
return false;
}
js驗(yàn)證IP及子網(wǎng)掩碼的合法性代碼分享:
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; //"合法"
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
- Shell腳本獲取本地網(wǎng)卡IP、mac地址、子網(wǎng)掩碼、dns IP、外網(wǎng)IP
- C++實(shí)現(xiàn)獲取IP、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS等本機(jī)網(wǎng)絡(luò)參數(shù)的方法
- Python實(shí)現(xiàn)根據(jù)IP地址和子網(wǎng)掩碼算出網(wǎng)段的方法
- C#設(shè)置本地網(wǎng)絡(luò)如DNS、網(wǎng)關(guān)、子網(wǎng)掩碼、IP等等
- JS 根據(jù)子網(wǎng)掩碼,網(wǎng)關(guān)計算出所有IP地址范圍示例
- 網(wǎng)絡(luò)編程基礎(chǔ)(局域網(wǎng)、ip、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS)概念理解
相關(guān)文章
[Bootstrap-插件使用]Jcrop+fileinput組合實(shí)現(xiàn)頭像上傳功能實(shí)例代碼
這篇文章主要介紹了[Bootstrap-插件使用]Jcrop+fileinput組合實(shí)現(xiàn)頭像上傳功能實(shí)例代碼,非常具有實(shí)用價值,需要的朋友可以參考下。2016-12-12
Javascript中從學(xué)習(xí)bind到實(shí)現(xiàn)bind的過程
這篇文章主要介紹了Javascript中從學(xué)習(xí)bind到實(shí)現(xiàn)bind的過程,有興趣的朋友跟著學(xué)習(xí)下吧。2018-01-01
關(guān)于Google發(fā)布的JavaScript代碼規(guī)范你要知道哪些
代碼規(guī)范并不是一種編寫正確JavaScript代碼的規(guī)則,而是為了保持源代碼編寫模式一致的一種選擇。這篇文章給大家介紹了關(guān)于Google發(fā)布的JavaScript代碼規(guī)范你要知道哪些,感興趣的朋友一起看看吧2018-04-04
JAVASCRIPT 客戶端驗(yàn)證數(shù)據(jù)的合法性代碼(正則)
JAVASCRIPT 客戶端驗(yàn)證數(shù)據(jù)的合法性代碼,比較全了,所以簡單分頁了下,喜歡的朋友可以收藏下。2010-04-04
jQuery實(shí)現(xiàn)動態(tài)生成表格并為行綁定單擊變色動作的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)動態(tài)生成表格并為行綁定單擊變色動作的方法,涉及jQuery頁面元素遍歷與事件動態(tài)響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
BootStrap Table 設(shè)置height表頭與內(nèi)容無法對齊的問題
這篇文章主要介紹了BootStrap Table 設(shè)置height表頭與內(nèi)容無法對齊的問題,需要的朋友可以參考下2016-12-12
常用的js驗(yàn)證和數(shù)據(jù)處理總結(jié)
遇到需要對數(shù)據(jù)及表單驗(yàn)證的,我相信大家都像我一樣,喜歡在網(wǎng)上找相關(guān)的方法,因?yàn)樽约簩懙脑?,是比較耗時的。今天就給大家分享一下,自己在工作中總結(jié)的一些常用的js。2016-08-08

