Foros del Web » Programando para Internet » PHP »

duda expresiones regulares ereg y preg_match

Estas en el tema de duda expresiones regulares ereg y preg_match en el foro de PHP en Foros del Web. hola estoy haciendo un ejercicio y me surge una duda yo tengo que meter unos numeros 12 13.5-6.7 su separador puede ser los espacios en ...
  #1 (permalink)  
Antiguo 27/02/2008, 11:10
 
Fecha de Ingreso: diciembre-2007
Mensajes: 26
Antigüedad: 16 años, 4 meses
Puntos: 1
duda expresiones regulares ereg y preg_match

hola estoy haciendo un ejercicio

y me surge una duda
yo tengo que meter unos numeros

12 13.5-6.7

su separador puede ser los espacios en blanco o bien guiones
estoy utlizando preg_match
y lo que hago es un
variable llamada $stock introduzco los numeros
se almacenan alli, pero luego caracter a caracter, quiero comprobar que solamente o son numeros del 0-9 o un espacio en blanco o un guion
utilizo preg_match pero cuadno hago la expresion de abajo no me funcionan me
aparece un error,
he ido a php.net entiendo lo que explica pero aplico lo que dice y no me sale

$mal=0;

while($i<strlen($stock)|| $mal==0)
{
if((preg_match("/[a-z]||[A-Z]||á||é||í|ó||ú||ñ||ü||\@|\*||\+/",$stock))
$mal=1;

}
if($mal==0)
print("La cadena correcta es".$stock);

else
print("La cadena es incorrecta");
}


tambien tengo una duda con ereg
aparece en php.net el siguiente ejemplo

El siguiente fragmento de código toma una fecha en formato ISO (AAAA-MM-DD) y la imprime en formato DD.MM.AAAA:


if ( ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs ) ) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Invalid date format: $date";
}

si los años son AAAA entiendo que sea "([0-9]{4})-
pero porque luego en los MM pone })-([0-9]{1,2})- no se podria poner en vez de 1,2 solamente 2 es decir })-([0-9]{2})-
alguien me puede contestar
gracias
  #2 (permalink)  
Antiguo 28/02/2008, 05:13
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: duda expresiones regulares ereg y preg_match

12 13.5-6.7

/[a-z]||[A-Z]||á||é||í|ó||ú||ñ||ü||\@|\*||\+/

¿por qué el ||? en las expresiones regulares se usa solamente uno, no doble.
Tampoco es necesario que separes tanto, podés usar solo una clase de caracteres. Y por último tampoco es necesario escapar los * y @

/[a-zA-Záéíóúñü@*]+/

Pero vamos a tu caso puntual.
Según entiendo, tenés una serie de números, de largo no especificado, separados por un guión o un espacio. La expresión regular que coincide con esto es, entonces:

Código:
([0-9]+([.0-9])?+[ -])+
que quiere decir:
"una serie de números teniendo como mínimo uno, luego puede o no aparecer un punto seguido de otros números, seguido de un espacio o un guión. Todo esto aparece al menos una vez y se puede repetir".

El problema de esta expresión es que necesita que la cadena termine con un guión o un espacio, pero creo que sabrás resolverlo

Para tu segunda pregunta, el motivo por el que pone {1,2} es simplemente para poder tomar tanto

2008-02-01

como

2008-2-1


Saludos.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 15:38.