(只是想指出,我已经检查了其他与我类似的问题,但找不到任何不使用正则表达式的问题,而那些没有使用正则表达式的问题似乎不适合我的情况。)
给定一个文本区域字段,用户可以使用 JavaScript 以逗号分隔的字符串形式输入多个 IP 地址,验证所有这些逗号分隔的 IP 地址的最佳方法是什么,例如:
1.1.1.1,2.2.2.2,3.3.3.,4.4.4.256
我显然需要测试有效的 IP 范围以及三个点和四个数字。
我更喜欢不使用正则表达式的解决方案。
最佳答案
您可以分割每个IP并检查数字是否有效。您还可以检查点 (.) 是否为 4。
function validateIp(ip) {
if ( ip == null || ip === '' ) {
return true;
}
const parts = ip.split('.');
if(parts.length !== 4) {
return true;
}
for(let i = 0; i < parts.length; i++) {
const part = parseInt(parts[i]);
if(part < 0 || part > 255) {
return true;
}
}
if(ip.endsWith('.')) {
return true;
}
return false;
}
const input = '1.1.1.1,2.2.2.2,3.3.3.,4.4.4.256';
const arr = input.split(',');
const wrongIps = arr.filter(validateIp);
console.log(arr)
console.log(wrongIps)
当然,您可以执行相反的操作并仅获取有效的 IP 地址。
关于javascript - 验证用逗号分隔的多个 IP 地址,而不使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593480/