Регулярное выражение для IPv4-адреса

Используйте /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/, чтобы проверить, что вся строка является корректным IPv4-адресом. Каждый пример ниже проверен по этому шаблону, а открыть его в Regex Tester можно с уже загруженными образцами.

Обновлено

/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/
Открыть в Regex Tester
ВводРезультат
192.168.1.1✓ Совпадение
8.8.8.8✓ Совпадение
255.255.255.255✓ Совпадение
0.0.0.0✓ Совпадение
256.1.1.1✗ Нет совпадения
192.168.1✗ Нет совпадения
01.2.3.4✗ Нет совпадения
1.2.3.4.5✗ Нет совпадения
192.168.1.1/24✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
25[0-5]250–255
2[0-4]\d200–249
1\d\d100–199
[1-9]?\d0–99, без ведущего нуля
(?:…\.){3}Три числа, каждое с последующей точкой
(?:…)$Четвёртое число и конец строки

Примеры кода

JavaScript

const re = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)', value))

PHP

preg_match('/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/', $value) === 1;

Примечания и ограничения

Каждый октет проверяется на диапазон 0–255, что простым шаблоном \d{1,3} сделать нельзя. Ведущие нули отклоняются, так как некоторые системы читают их как восьмеричные. Чтобы принимать запись в формате CIDR, добавьте (?:\/(?:3[0-2]|[12]?\d))? перед $.

Часто задаваемые вопросы

Какое регулярное выражение для IPv4-адреса?
/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/ — шаблон проверяет всю строку. Что делает каждая часть, см. таблицу выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: 192.168.1.1, 8.8.8.8, 255.255.255.255, 0.0.0.0. Остальные — нет.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и примеры текста загрузятся автоматически, а совпадения подсвечиваются при редактировании.