Javascript 将IP与存储在阵列中的范围匹配
我返回一个IP,然后从一个范围进行比较 我只是在看美国的IP,如果它在一个范围内,我会显示一个消息。我正确地获取了IP,但当我试图将其与范围匹配时,我得到了意外范围的语法错误。我应该如何解决这个问题 下面是我的代码的样子Javascript 将IP与存储在阵列中的范围匹配,javascript,jquery,Javascript,Jquery,我返回一个IP,然后从一个范围进行比较 我只是在看美国的IP,如果它在一个范围内,我会显示一个消息。我正确地获取了IP,但当我试图将其与范围匹配时,我得到了意外范围的语法错误。我应该如何解决这个问题 下面是我的代码的样子 $.getJSON("http://jsonip.com", function (data) { var x = data.ip; $('body').html(x); var usRange = [3.0.0.0, 222.229.21.255];
$.getJSON("http://jsonip.com", function (data) {
var x = data.ip;
$('body').html(x);
var usRange = [3.0.0.0, 222.229.21.255];
if (x >= usRange[0] && x <= usRange[1]) {
alert('US');
} else alert('outside US');
});
$.getJSON(“http://jsonip.com,函数(数据){
var x=data.ip;
$('body').html(x);
var usRange=[3.0.0.0222.229.21.255];
如果(x>=usRange[0]&&x错误的含义,则不能用4个小数点分配数字
FYI:从json
返回的IP地址是字符串,而不是数字
所以你的方法行不通,来看看我的方法
1) 根据$返回的
拆分ip地址。getJSON
var x = data.ip.split('.'); // returns ["122", "164", "17", "211"]
2) 不要使用usRange
array,只需通过简单的比较操作即可
3) 无法将字符串与数字进行比较,因此请将这些字符串转换为数字,如
+x[0] //convert "122" to 122
最后,
$.getJSON("http://jsonip.com", function (data) {
var x = data.ip.split('.');
if (+x[0] >= 3 && +x[0] <= 222) {
if (+x[1] >= 0 && +x[1] <= 229) {
if (+x[2] >= 0 && +x[2] <= 21) {
if (+x[3] >= 0 && +x[3] <= 255) {
alert("Within range");
}
}
}
} else {
alert("Is not within range");
}
});
$.getJSON(“http://jsonip.com,函数(数据){
var x=data.ip.split('.');
如果(+x[0]>=3&&+x[0]=0&&+x[1]=0&&+x[2]=0&&+x[3]错误的含义,则不能分配带有4个小数点的数字
FYI:从json
返回的IP地址是字符串,而不是数字
所以你的方法行不通,来看看我的方法
1) 根据$返回的
拆分ip地址。getJSON
var x = data.ip.split('.'); // returns ["122", "164", "17", "211"]
2) 不要使用usRange
array,只需通过简单的比较操作即可
3) 无法将字符串与数字进行比较,因此请将这些字符串转换为数字,如
+x[0] //convert "122" to 122
最后,
$.getJSON("http://jsonip.com", function (data) {
var x = data.ip.split('.');
if (+x[0] >= 3 && +x[0] <= 222) {
if (+x[1] >= 0 && +x[1] <= 229) {
if (+x[2] >= 0 && +x[2] <= 21) {
if (+x[3] >= 0 && +x[3] <= 255) {
alert("Within range");
}
}
}
} else {
alert("Is not within range");
}
});
$.getJSON(“http://jsonip.com,函数(数据){
var x=data.ip.split('.');
如果(+x[0]>=3&&+x[0]=0&&+x[1]=0&&+x[2]=0&&+x[3]为了更好的方法,我决定在这里重写我的答案。第一种方法实际上是使用位移位将IP地址转换为整数,然后比较整数值。我保留了第二个答案作为选项,但我更喜欢第一个
这两个函数都不会验证您的IP地址!
方法1:位移位
/**
*检查IP地址是否在其他2个IP地址的范围内
*@param{String}ip要验证
*@param{String}lowerBound范围的下限
*@param{String}upperBound范围的上限
*@return{Boolean}真或假
*/
函数在范围内(ip、下限、上限){
//将所有IP放入一个数组中进行迭代,并将所有IP拆分为各自的IP
//段数组
var ips=[ip.split('.')、lowerBound.split('.')、upperBound.split('.')];
//将所有IP转换为INT
对于(变量i=0;i上限[i])返回false;
}
}
返回true;
}
为了更好的方法,我决定在这里重写我的答案。第一种方法实际上是使用位移位将IP地址转换为整数,然后比较整数值。我保留了第二种答案作为选项,但我更喜欢第一种
这两个函数都不会验证您的IP地址!
方法1:位移位
/**
*检查IP地址是否在其他2个IP地址的范围内
*@param{String}ip要验证
*@param{String}lowerBound范围的下限
*@param{String}upperBound范围的上限
*@return{Boolean}真或假
*/
函数在范围内(ip、下限、上限){
//将所有IP放入一个数组中进行迭代,并将所有IP拆分为各自的IP
//段数组
var ips=[ip.split('.')、lowerBound.split('.')、upperBound.split('.')];
//将所有IP转换为INT
对于(变量i=0;i上限[i])返回false;
}
}
返回true;
}
为什么你认为内置的javascript操作符可以处理IP地址?我想说的是,3.0.0.0
在javascript中不是一个有效的数字,所以将其与任何东西进行比较都会失败。你看,解析IP地址是复杂的,这不是我一分钟内就会想到的,也不是什么可以使用javascript操作符,因为数字(float)只能有一个小数,IP地址作为数字无效,它们必须是字符串,然后必须构建PAR