Что такое регулярное выражение JavaScript IPv4, исключая 0.0.0.0 и 255.255.255.255? - PullRequest
3 голосов
/ 22 октября 2019

Не могли бы вы, ребята, сообщить мне правильное регулярное выражение для IPv4 (исключая 0.0.0.0 и 255.255.255.255) на языке JavaScript?

На самом деле, мое тестовое регулярное выражение выглядит следующим образом. Но все равно 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;
        }
    }

Ответы [ 3 ]

2 голосов
/ 22 октября 2019

Вы можете просто добавить чек перед использованием регулярного выражения

return  str !== '0.0.0.0' && str !== '255.255.255.255'  ? regex.test(str) : false
2 голосов
/ 22 октября 2019

Это должно работать для вас:

^(?!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
  • $ - конец

Regular expression visualisation

Демонстрация Debuggex

1 голос
/ 22 октября 2019

Попробуйте /^(?!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.

...