Javascript 如何验证广播IP地址(从224.0.0.0到239.255.255.255)
我想验证广播和多播IP地址。 这是我使用的两个ip 255.255.0或229.0.0.20Javascript 如何验证广播IP地址(从224.0.0.0到239.255.255.255),javascript,Javascript,我想验证广播和多播IP地址。 这是我使用的两个ip 255.255.0或229.0.0.20 ['validate-mcast-ip', 'Please enter a valid multicast ip in this field.', function (v) { if (v == "") return true; if (v == "0.0.0.0") return false; ipPattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.
['validate-mcast-ip', 'Please enter a valid multicast ip in this field.', function (v) {
if (v == "") return true;
if (v == "0.0.0.0") return false;
ipPattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
ipArray = v.split(".");
isIP = ipPattern.test(v);
if (isNaN(ipArray[0]) || ipArray[0] < 224 || ipArray[0] > 239) {
isIP = false;
}
for (i = 1; i < ipArray.length; i++) {
if (isNaN(ipArray[i]) || ipArray[i] > 255) {
isIP = false;
}
}
return isIP;
}],
['validate-mcast-ip',请在此字段中输入有效的多播ip',函数(v){
如果(v==“”)返回true;
如果(v==“0.0.0.0”)返回false;
ipPattern=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
ipArray=v.split(“.”);
isIP=i模式测试(v);
if(isNaN(ipArray[0])| | ipArray[0]<224 | | ipArray[0]>239){
isIP=假;
}
对于(i=1;i255){
isIP=假;
}
}
返回isIP;
}],
我想在输入多播IP和广播IP时发出警报。那么您到底想做什么呢?您正在检查IP(已解析为四个项目的数组)是否符合您设置的某些限制。假设只允许224.0.0.0和239.255.255.255(含)之间的所有IP地址,以及225.225.225.0和229.0.0.20(如您最初所说)这两个地址。你是怎么做到的 首先,检查IP是否介于224.0.0.0和239.255.255.255之间(含)。因此,很容易看出,只需检查第一个数字。因此:
if(ipArray[0]<224||ipArray[0]>239)
return false;
这是因为&&
运算符比|
运算符具有更高的值(请阅读本文的该部分!)
现在,利用我们新发现的知识,让我们重写您的原始代码:
function (v) {
if(v=="") return true;
if(v=="0.0.0.0") return false;
if(!v.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)) return false;
ipArray = v.split(".");
//We don't need to check for NAN anymore because it matched your
//beautiful regex above
if((ipArray[0]<224||ipArray[0]>239)&&v!="255.255.255.0"&&v!="229.0.0.20")
return false;
return true; //if we've reached this point, the IP conforms to the restrictions!
}
功能(v){
如果(v==“”)返回true;
如果(v==“0.0.0.0”)返回false;
if(!v.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)返回false;
ipArray=v.split(“.”);
//我们不需要再检查NAN了,因为它符合你的要求
//美丽的正则表达式
如果((ipArray[0]239)和&v!=“255.255.255.0”和&v!=“229.0.0.20”)
返回false;
return true;//如果我们达到了这一点,那么IP符合限制条件!
}
你的问题有答案吗?如果是这样,不要忘记帮助堆栈溢出并将此答案标记为已接受(绿色复选标记) 一个“简单”的正则表达式,如/^(2(?:2[4-9]| 3[0-9])\([0-2]?[0-9]?[0-9])\([0-2]?[0-9]?[0-9]?[0-9])。([0-2]?[0-9]?[0-9])$/g
应该做你想做的事情
function validateMulticastIP(ip) {
return !!ip.match(/^(2(?:2[4-9]|3[0-9]))\.([0-2]?[0-9]?[0-9])\.([0-2]?[0-9]?[0-9])\.([0-2]?[0-9]?[0-9])$/g);
}
validateMulticastIP('2.3.5.6'); //false
validateMulticastIP('2'); //false
validateMulticastIP('230.3.5.6'); //true
validateMulticastIP('255.255.255.0'); //false
validateMulticastIP('229.0.0.20'); //true
上述代码适用于多播ip,但如何验证广播地址请参阅braod案例的这段代码,如果(isNaN(ipArray[0])| | ipArray[0]<224 | | ipArray[0]>239{isIP=false;}是的,这就是我想要的…让我试试上面的代码,我可以为ip 225.225.225.0抛出一个错误,但不能为229.0.0.20if(isNaN(ipArray[0])| | ipArray[0]<224 | | ipArray[0]>239&&v!=“225.225.0”&&v!=“229.0.0.20”){isIP=false;}这是我尝试过的,但是在案例229.0.0.20中它没有显示错误…但是它应该抛出一个错误不要忘记额外的括号。。。使用
if((isNAN(ipArray[0])|ipArray[0]239)和&v!=“225.225.225.0”和&v!=“229.0.0.20”)
作为if语句。看看这是否有效。(首先输入错误)是的,我写得很正确,但是为什么这个代码不起作用我不知道((isNaN(ipArray[0])239)和&v!=“225.225.0”&&v!=“229.0.0.20”){isIP=false;}请复制粘贴我的代码,而不是重新输入。您给出的代码不正确,请看isNAN(ipArray[0])| | ipArray[0]“simple regex”,您想骗谁?(我开玩笑,我开玩笑)。如果您正在测试单个字符串值,则不需要/g
,(全局)选项。
function (v) {
if(v=="") return true;
if(v=="0.0.0.0") return false;
if(!v.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)) return false;
ipArray = v.split(".");
//We don't need to check for NAN anymore because it matched your
//beautiful regex above
if((ipArray[0]<224||ipArray[0]>239)&&v!="255.255.255.0"&&v!="229.0.0.20")
return false;
return true; //if we've reached this point, the IP conforms to the restrictions!
}
function validateMulticastIP(ip) {
return !!ip.match(/^(2(?:2[4-9]|3[0-9]))\.([0-2]?[0-9]?[0-9])\.([0-2]?[0-9]?[0-9])\.([0-2]?[0-9]?[0-9])$/g);
}
validateMulticastIP('2.3.5.6'); //false
validateMulticastIP('2'); //false
validateMulticastIP('230.3.5.6'); //true
validateMulticastIP('255.255.255.0'); //false
validateMulticastIP('229.0.0.20'); //true