什么是正确的 JavaScript IPv4 正则表达式,不包括 0.0.0.0 和 255.255.255.255?

What is proper JavaScript IPv4 regex excluding 0.0.0.0 and 255.255.255.255?

你们能告诉我 JavaScript 语言的 IPv4 正则表达式(不包括 0.0.0.0 和 255.255.255.255)吗?

实际上,我的测试正则表达式如下。但 0.0.0.0 和 255.255.255.255 仍然匹配。

那么,有没有比我的更好的正则表达式?以及排除 0.0.0.0 和 255.255.255.255

的任何解决方案

提前致谢。


    function inputCheck(inputString) {
        var inputList = inputString.split("\n");
        var flagList = [];
        var ipRegex = new RegExp("^(([1-9]?\d|1\d\d|2[0-5][0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|2[0-5][0-5]|2[0-4]\d)$");

        for (var i=0; i<inputList.length; i++) {
            var tempResult = ipRegex.test(inputList[i]);
            flagList.push(tempResult);
        }

        if (inputString.replace(/\s/gi, "").length === 0) {
            return true;
        } else if(flagList.indexOf(false) !== -1) {
            return false;
        } else {
            return true;
        }
    }

尝试/^(?!0.0.0.0)(?!255.255.255.255)(?:\d|\d\d|1\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|\d\d|1\d\d|2[0-4]\d|25[0-5])){3}$/g

您可以在使用正则表达式之前简单地添加一个检查

return  str !== '0.0.0.0' && str !== '255.255.255.255'  ? regex.test(str) : false

这应该适合你:

^(?!0\.0\.0\.0|255\.255\.255\.255)((((2([0-4][0-9]|5[0-5]))|1[0-9]{2}|[0-9]{1,2})\.){3}(((2([0-4][0-9]|5[0-5]))|1[0-9]{2}|[0-9]{1,2})))$

  • ^ - 开始
  • (?!0\.0\.0\.0|255\.255\.255\.255) - 不是 0.0.0.0 或 255.255.255.255
  • ((2([0-4][0-9]|5[0-5]))|1[0-9]{2}|[0-9]{1,2}) - 0-255
  • (((2([0-4][0-9]|5[0-5]))|1[0-9]{2}|[0-9]{1,2})\.){3} - 0-255 后跟句号,三遍
  • (((2([0-4][0-9]|5[0-5]))|1[0-9]{2}|[0-9]{1,2})) - 0-255
  • $ - 结束

Debuggex Demo