[Cascavel-pm] [Bulk] Re: Validando um IP
Luis Motta Campos
luismottacampos em yahoo.co.uk
Sexta Outubro 20 02:27:03 PDT 2006
Sammuel Souza wrote:
> if ($ip =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/) {
> if (($1 > 255) || ($2 > 255) || ($3 > 255) || ($4 > 255)) {
> $msgerror = "Favor preencher o IP corretamente. <br> Ex:
> 255.255.255.255 <http://255.255.255.255>"; $error =
> }
> else {
> $msgerror = "IP com caracter indevido!"; $error = 0; }
>
>
> porem se a pessoa colocar
>
> 2.2.2.3.5
>
> ele aceita queria apenas com 4 casas
Assim:
$ip =~ m{
(?: # Aceite:
1?\d{1,2} # qualquer coisa de 0 a 199
| # OU
2[0-4]\d # qualquer coisa de 200 a 249
| # OU
25[0-5] # qualquer coisa de 250 a 255.
)
(?: # seguido de:
\. # um "." (ponto)
(?: # e novamente
1?\d{1,2} # qualquer coisa de 0 a 199
| # OU
2[0-4]\d # qualquer coisa de 200 a 249
| # OU
25[0-5] # qualquer coisa de 250 a 255.
)
){3} # sendo que este último pedaço
# se repete exatamente 3 vezes
}x # o "x" no final é o que me permite comentar a Regex.
Isto bate com 4.79.3.63, 127.0.0.1, com os IPs fornecidos pelo
Sammuel, e com qualquer outro IP válido (incluindo os reservados, como a
família 192.168.0.0/16 e a família 10.0.0.0/8).
Eu NÃO TESTEI esta expressão regular. Alguém faça o favor de fazê-lo e
me dizer se está fucnionando corretamente.
DESAFIO: agora que eu mostrei como faz, quem é que me consegue uma
expressão regular para validar IPs "vivos", isto é, que não fazem parte
das famílias "reservadas" (como a 192.168.* e a 10.*)?
Espero que isso termine de uma vez com este problema.
Adoraria ler comentários, especialmente do Sammuel.
Putamplexos!
--
Luis Motta Campos
Sênior System Engineer at Segula.FR
Hobbyist Cooker and Photograph
Mais detalhes sobre a lista de discussão Cascavel-pm