Подтвердить что ты не робот

Regex соответствует IP-адресу

Я новичок с регулярным выражением, и я хочу использовать функцию preg_match, чтобы узнать, является ли строка IP-адресом.

Например, если $string = "45.56.78.222" или что-то подобное, preg_match($regex, $string) должен возвращать значение true. Итак, что $regex должно быть?

4b9b3361

Ответ 1

Не используйте регулярное выражение, когда вам не нужно:)

$valid = filter_var($string, FILTER_VALIDATE_IP);

Если вам действительно нужно регулярное выражение...

$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);

Однако регулярное выражение будет только проверять формат, max для любого октета - это max для байта без знака или 255.

Вот почему необходим IPv6 - адрес IPv4 имеет длину всего 32 бита и популярный интернет:)

Ответ 2

/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/

должен сделать для вашего примера (который содержит строку, которая не является IP-адресом). И, конечно, это только адрес IPv4.

Ответ 3

/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ 

Это будет проверять идеальный диапазон, если диапазон превышает 255 из любого из 4.