Foros del Web » Programando para Internet » PHP »

Problema con expresiones regulares

Estas en el tema de Problema con expresiones regulares en el foro de PHP en Foros del Web. Estoy aprendiendo a usar esto de las expresiones regulares e hice una que pueda validar los siguientes tipos de datos: 192.168.1.0 192.168.1.0/24 192.168.1.0 255.255.255.0 Para ...
  #1 (permalink)  
Antiguo 26/11/2010, 13:58
Avatar de BaByRoDrI  
Fecha de Ingreso: julio-2009
Ubicación: Mexico
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 1
Exclamación Problema con expresiones regulares

Estoy aprendiendo a usar esto de las expresiones regulares e hice una que pueda validar los siguientes tipos de datos:

192.168.1.0
192.168.1.0/24
192.168.1.0 255.255.255.0


Para ello me salio la siguiente expresión regular:

Código:
^(\d{1,3}\.){3}\d{1,3}(( (\d{1,3}\.){3}\d{1,3})|(/\d{1,2}))?$
Y la utilice en un código PHP de la siguiente manera:

Código PHP:
Ver original
  1. if (!preg_match('/^(\d{1,3}\.){3}\d{1,3}(( (\d{1,3}\.){3}\d{1,3})|(/\d{1,2}))?$/', $info)) {
  2.             echo '<div class="alert">Valor invalido</div>';
  3.             echo '<div>Usa la IP y la m&aacute;scara de subred CDIR: 10.0.0.1/22</div>';
  4.             echo '<div>O usa la IP y la m&aacute;scara de subred: 10.0.0.1 255.255.255.0</div>';
  5.             exit;
  6.         }

Lamentablemente siempre que pongo un valor valido siempre me da que no es así :S, me manda el siguiente error:

Warning: preg_match() [function.preg-match]: Unknown modifier '\' in C:\Servidor\htdocs\calcip\class_calcip.php on line 5

Incluso probé mi expresión en esta web: http://rejex.heroku.com/ y si me valida correcto! No tengo la más mínima idea de porque en mi código no funciona como debe!

No entiendo porque no me funciona :S
  #2 (permalink)  
Antiguo 26/11/2010, 14:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Problema con expresiones regulares

Para los ip o email, etc. es bueno usar la librería filter. Mira aquí el ejemplo http://www.php.net/manual/en/filter....validation.php

Ahora si deseas aprender a usar Expresiones Regulares, no veo los delimitadores. Te recomiendo que pases por el área de aportes para que veas un tema que te puede ayudar con las expresiones regulares.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 26/11/2010, 15:11
Avatar de BaByRoDrI  
Fecha de Ingreso: julio-2009
Ubicación: Mexico
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Problema con expresiones regulares

Ya la he corregido quedando así:

Código PHP:
Ver original
  1. if (!preg_match('(^(\d{1,3}\.){3}\d{1,3}(( (\d{1,3}\.){3}\d{1,3})|(/\d{1,2}))?$)', $info)) {   
  2.             echo '<div class="alert">Valor invalido</div>';
  3.             echo '<div>Usa la IP y la m&aacute;scara de subred CDIR: 10.0.0.1/22</div>';
  4.             echo '<div>O usa la IP y la m&aacute;scara de subred: 10.0.0.1 255.255.255.0</div>';
  5.             exit;
  6.         }
  #4 (permalink)  
Antiguo 26/11/2010, 15:13
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problema con expresiones regulares

Cita:
Iniciado por BaByRoDrI Ver Mensaje
Ya la he corregido quedando así:

Código PHP:
Ver original
  1. if (!preg_match('(^(\d{1,3}\.){3}\d{1,3}(( (\d{1,3}\.){3}\d{1,3})|(/\d{1,2}))?$)', $info)) {   
  2.             echo '<div class="alert">Valor invalido</div>';
  3.             echo '<div>Usa la IP y la m&aacute;scara de subred CDIR: 10.0.0.1/22</div>';
  4.             echo '<div>O usa la IP y la m&aacute;scara de subred: 10.0.0.1 255.255.255.0</div>';
  5.             exit;
  6.         }
esta mal hecha la expresión...
no tiene delimitadores como te mencionaron
__________________
More about me...
~ @rhyudek1
~ Github

Etiquetas: expresiones, regulares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:19.