[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