Работа с IP-адресами в JavaScript часто требует строгой проверки входных данных, особенно при обработке пользовательских запросов, сетевых конфигураций или логов. В библиотеке Validator.js для этих целей предусмотрены специализированные методы, позволяющие определить корректность IP-адреса и диапазона сетей.
Основная задача таких методов — исключить некорректные строки и гарантировать соответствие значения стандартам IPv4 и IPv6, а также CIDR-диапазонам.
Метод isIP используется для определения того, является
ли переданная строка валидным IP-адресом. Поддерживаются оба
распространённых формата: IPv4 и IPv6.
Сигнатура:
isIP(str [, version])
Параметры:
str — проверяемая строка
version — необязательный параметр, задающий версию
IP:
4 — только IPv46 — только IPv6IPv4-адрес состоит из четырёх октетов, разделённых точками. Каждый октет представляет число от 0 до 255.
Пример корректных значений:
validator.isIP("192.168.0.1"); // true
validator.isIP("255.255.255.255"); // true
Некорректные варианты:
validator.isIP("256.1.1.1"); // false
validator.isIP("192.168.0"); // false
validator.isIP("192.168.0.1.5"); // false
IPv6 использует шестнадцатеричную систему и состоит из восьми групп,
разделённых двоеточиями. Допускаются сокращения, включая удаление
ведущих нулей и использование ::.
Примеры валидных IPv6:
validator.isIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334"); // true
validator.isIP("2001:db8::8a2e:370:7334"); // true
validator.isIP("::1"); // true
Некорректные варианты:
validator.isIP("2001:::1"); // false
validator.isIP("12345::abcd"); // false
Использование второго параметра позволяет строго ограничить тип адреса.
validator.isIP("192.168.1.1", 4); // true
validator.isIP("192.168.1.1", 6); // false
validator.isIP("2001:db8::1", 6); // true
validator.isIP("2001:db8::1", 4); // false
Это особенно важно при работе с системами, где требуется чёткое разделение IPv4 и IPv6 трафика.
Метод isIPRange предназначен для проверки CIDR-нотации —
формата, описывающего диапазон IP-адресов.
Сигнатура:
isIPRange(str)
CIDR (Classless Inter-Domain Routing) представляет собой IP-адрес с добавленным префиксом, определяющим количество фиксированных бит сети.
Формат записи:
IP/маска
Примеры:
192.168.0.0/2410.0.0.0/82001:db8::/32Метод проверяет:
validator.isIPRange("192.168.0.0/24"); // true
validator.isIPRange("10.0.0.0/8"); // true
validator.isIPRange("2001:db8::/32"); // true
validator.isIPRange("192.168.0.0/33"); // false (маска вне диапазона IPv4)
validator.isIPRange("256.0.0.0/24"); // false (некорректный IP)
validator.isIPRange("192.168.0.0/-1"); // false
validator.isIPRange("2001:db8::/129"); // false (IPv6 маска превышает допустимую)
Для IPv4 допустимый диапазон маски — от 0 до 32, где:
Для IPv6 диапазон маски — от 0 до 128.
При проверке isIPRange учитываются оба уровня:
Методы решают разные задачи, несмотря на общую область применения.
isIP:
isIPRange:
При обработке логов серверов isIP используется для
выделения корректных адресов клиентов:
if (validator.isIP(log.ip)) {
// обработка IP
}
При настройке сетевых правил isIPRange позволяет
валидировать разрешённые подсети:
const allowed = validator.isIPRange("192.168.1.0/24");
CIDR для IPv6 часто используется в инфраструктуре глобальных сетей. Из-за большого адресного пространства маски чаще кратны 4 или 16 битам, но технически допускается любое значение от 0 до 128.
Пример:
validator.isIPRange("2001:db8::/48"); // true
validator.isIPRange("2001:db8::/200"); // false
Оба метода не выбрасывают исключений. Вместо этого возвращается строгое логическое значение:
true — строка соответствует форматуfalse — строка невалиднаЭто упрощает интеграцию в цепочки валидации данных без необходимости обработки ошибок через try/catch.
В связке с другими методами Validator.js проверка IP и диапазонов часто является частью комплексной фильтрации входных данных:
Строгая проверка формата предотвращает ошибки на уровне сетевой логики и снижает риск некорректной интерпретации адресов.