我正在尝试解决一些JS问题。我想检查一个IP地址是否有效。 因此数字必须在0-255之间。
因此,我现在想要做的是获取一个IP 192.168.1.1,并获取子字符串并将其加载到数组中,所以我想创建一个看起来像这样的数组:
array = ['192' , '168' , '1' , '1'];
我在算法中尝试了各种方法,但是无法动态定位数字并在每个点之间进行分割。
我已经尝试了几次,那就是我能得到的最接近的
。let str = '192.168.1.1';
isValidIp(str);
function isValidIP(str) {
let array = [];
let substringArray = [];
for (let i=0; i<str.length; i++){
if (str[i] == '.') array.push(i);
}
let counter = 0;
for (let i in array){
substringArray.push(str.substring(counter, array[i]));
counter = array[i];
}
console.log(substringArray);
}
哪个返回:
[ '192', '.168', '.1' ]
答案 0 :(得分:1)
您可以使用JavaScript的split()
函数,该函数返回由指定数字分隔的每个元素的数组。或者,我不建议您使用RegEx。这是两个示例:
function isValidIPwRegEx(str){
if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(str))
{
return true;
}
return false;
}
function isValidIP(str) {
let array = str.split("."),
isIP = true;
array = array.filter( block => !block.includes("+") && !block.includes("e") );
if(array.length!=4) return false;
array.forEach((number) => {
if ( !(+number >=0 && +number <= 255) ) { //As @p.s.w.g kindly suggested
isIP = false;
}
});
return isIP;
}
//With RegEx
console.log("With RegEx");
console.log(isValidIPwRegEx("192.168.1.1"));
console.log(isValidIPwRegEx("blah.blah.blah.blah")); //As @georg suggested
console.log(isValidIPwRegEx("1e1.2e1.+3e1.+5e1")); //As @georg again suggested to @Nina Scholz
console.log("");
//Without RegEx
console.log("Without RegEx");
console.log(isValidIP("192.168.1.1"));
console.log(isValidIP("blah.blah.blah.blah")); //As @georg suggested
console.log(isValidIP("1e1.2e1.+3e1.+5e1")); //As @georg again suggested to @Nina Scholz
console.log(isValidIP("1e1.2e1.3e1.5e1"));
答案 1 :(得分:0)
使用String的split
函数。
所以,类似"192.168.1.1".split(".")
答案 2 :(得分:0)
您可以分割字符串并检查长度是否为4,并且所有值都是整数并且小于[{'selection_id': 1099,
'value_dict': [{'value': '11', 'value_name': 'a'},
{'value': '78', 'value_name': 'p'},
{'value': '13', 'value_name': 'y'}]},
{'selection_id': 1097,
'value_dict': [{'value': '39', 'value_name': 'b'},
{'value': '52', 'value_name': 'f'}]},
{'selection_id': 1098,
'value_dict': [{'value': '98', 'value_name': 'd'},
{'value': '4', 'value_name': 'r'}]}]
。
256
答案 3 :(得分:0)
(0|[1-9]\d{0:2})
如果您希望更加精确,可以对每个数字进行校验:
for (i = 4; i < table -1; i++){
let value = document.querySelector("[name='main']")
.contentWindow.document.getElementById("music").rows[i].cells[1].innerHTML;
if (numbers.includes(value))
{
document.querySelector("[name='main']")
.contentWindow.document.getElementById("music")
.rows[i].cells[1].style.backgroundColor = "yellow";
};
这可以防止多余的前导0。