我想验证广播和多播IP地址。 这是两个ip我正在使用255.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})\.(\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;
}],
我想在输入多播IP和广播IP时发出警报。
答案 0 :(得分:3)
“{em>简单”正则表达式(例如/^(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
)应该完全符合您的要求。
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
答案 1 :(得分:0)
那么你到底想要做什么呢?你正在检查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;
但是等一下:如果IP地址是225.225.225.0或229.0.0.20,我们应该不返回false!因此,我们的最后一个代码段变为:
if((ipArray[0]<224||ipArray[0]>239)&&v!="255.255.255.0"&&v!="229.0.0.20")
return false;
请注意,条件开头的||
部分是“括号”(缺少更好的单词)。这是因为如果我们不这样做,Javascript解释器会认为我们的意思是:
if(ipArray[0]<224||(ipArray[0]>239&&v!="255.255.255.0"&&v!="229.0.0.20"))
return false;
这是因为&&
运算符比||
运算符具有更高precedence(阅读本文的那一部分!)。
现在,凭借我们新发现的知识,让我们重写原始代码:
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!
}
你的问题得到了解答吗?如果是这样,请不要忘记帮助Stack Overflow并将此答案标记为已接受(绿色复选标记)!