javascript - 验证用逗号分隔的多个 IP 地址,而不使用正则表达式

标签 javascript

(只是想指出,我已经检查了其他与我类似的问题,但找不到任何不使用正则表达式的问题,而那些没有使用正则表达式的问题似乎不适合我的情况。)

给定一个文本区域字段,用户可以使用 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 地址。

Example

关于javascript - 验证用逗号分隔的多个 IP 地址,而不使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593480/

相关文章:

javascript - 为什么要播放音频的此Javascript代码需要在前面具有alert()才能起作用?

javascript - 防止碰 Angular (JS游戏)

javascript - Null 是类型对象,所以它是真的吗?幕后发生了什么?

javascript - 在页面加载时运行 Javascript 代码

javascript - "catch(console.error)"是捕获 Promise 拒绝的有效方法吗?

javascript - 屏蔽输入插件

javascript - 为什么使用 immutableJS 我的状态没有改变?

javascript - 为什么我的 div 元素没有根据我的移动功能移动?

javascript - 获取嵌套在多个类中的值

javascript - 根据组数将数组划分为子数组