Regex para endereço IPv4

Use /^(?:(?: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)$/ para verificar se uma string inteira é um endereço IPv4 válido. Todos os exemplos abaixo foram testados contra o padrão, e você pode abri-los no Testador de Regex com as amostras já carregadas.

Atualizado em

/^(?:(?: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)$/
Abrir no Testador de Regex
EntradaResultado
192.168.1.1✓ Corresponde
8.8.8.8✓ Corresponde
255.255.255.255✓ Corresponde
0.0.0.0✓ Corresponde
256.1.1.1✗ Não corresponde
192.168.1✗ Não corresponde
01.2.3.4✗ Não corresponde
1.2.3.4.5✗ Não corresponde
192.168.1.1/24✗ Não corresponde

Como o padrão funciona

ParteSignificado
25[0-5]250–255
2[0-4]\d200–249
1\d\d100–199
[1-9]?\d0–99, sem zero à esquerda
(?:…\.){3}Três números, cada um seguido de um ponto
(?:…)$O quarto número, seguido do fim da string

Exemplos de código

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;

Observações e limitações

Cada octeto é verificado para ficar entre 0 e 255, o que um padrão simples \d{1,3} não consegue fazer. Zeros à esquerda são rejeitados porque alguns sistemas os interpretam como octal. Para aceitar a notação CIDR, acrescente (?:\/(?:3[0-2]|[12]?\d))? antes do $.

Perguntas frequentes

Qual é a regex para endereço 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)$/ — ela corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: 192.168.1.1, 8.8.8.8, 255.255.255.255, 0.0.0.0. Os outros não.
Como testo essa regex?
Clique em “Abrir no Testador de Regex” — o padrão, as flags e o texto de exemplo são carregados automaticamente, e as correspondências são destacadas conforme você edita.