Foros del Web » Programando para Internet » PHP »

problema con expresión regular

Estas en el tema de problema con expresión regular en el foro de PHP en Foros del Web. Hola Quiero validar un dato, este dato puede ser: cualquier numero, o cuaquier porcentage del 0.00 al 100 O sea: si los valores son por ...
  #1 (permalink)  
Antiguo 18/08/2008, 22:36
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 19 años, 6 meses
Puntos: 0
problema con expresión regular

Hola
Quiero validar un dato, este dato puede ser: cualquier numero, o cuaquier porcentage del 0.00 al 100

O sea: si los valores son por ejemplo: 1.1, 50.6, 79, 10056 o 1.1%, 50.6%, 79% , están bien, pero 10056% o 100.1% están mal

Gracias por la ayuda
__________________
ratamaster
  #2 (permalink)  
Antiguo 19/08/2008, 00:49
 
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina.
Mensajes: 95
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: problema con expresión regular

Soy novato en esto, pero a mi se me ocurre para un número.

Código:
if ( $num < 0 || $num > 100 )
     echo "error" ; // acá pones lo que pasa cuando hay error.
else
     echo "va bien" ; //acá lo que pasa si todo sale bien.
Ahora si $num contiene un porcentaje, primero hay que sacarle el "%" del final.
Haría algo así como.

Código:
$num = subsrt($num , 0 , strlen($num)-1 ) ; //esto último le saca el %
Y ahi si ya lo tienes en número y le mandas al if.
  #3 (permalink)  
Antiguo 19/08/2008, 09:27
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: problema con expresión regular

Gracias, pero a raiz de como está formado el código, necesitaría una expresión regular.

Alguien me podría ayudar?
__________________
ratamaster
  #4 (permalink)  
Antiguo 19/08/2008, 17:55
 
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina.
Mensajes: 95
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: problema con expresión regular

Ahhh.. perdón por tomarte el pelo entonces :p

Espero alguno ayude así aprendo yo tambien :)
  #5 (permalink)  
Antiguo 19/08/2008, 22:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con expresión regular

mira, lamentablemente con puro regex no podemos asegurar que supere cierto numero entero, como el 100... tan solo un numero determinado de caracteres...

entonces, tu expresión seria algo así...

Código:
/^[0-9]{1,3}(\.[0-9]+)?%?$/
de este modo, obtenemos de 1 a 3 números del 0 al 9... posiblemente seguidos de punto y al menos un numero decimal... además de un posible signo de porcentaje

no estoy seguro de su precisión, pero al menos... el error conocido seria que puede capturar.... 999.99999999999...N% (suerte)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 19/08/2008, 22:43
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: problema con expresión regular

Cita:
Iniciado por pateketrueke Ver Mensaje
mira, lamentablemente con puro regex no podemos asegurar que supere cierto numero entero, como el 100... tan solo un numero determinado de caracteres...

entonces, tu expresión seria algo así...

Código:
/^[0-9]{1,3}(\.[0-9]+)?%?$/
de este modo, obtenemos de 1 a 3 números del 0 al 9... posiblemente seguidos de punto y al menos un numero decimal... además de un posible signo de porcentaje

no estoy seguro de su precisión, pero al menos... el error conocido seria que puede capturar.... 999.99999999999...N% (suerte)
Bueno, de esta forma el puede verificar que el primer caracter sea un 1 o nada.
Pero aun asi sigue permitiendo valores hasta 199:

Código:
/^([1]{1})?[0-9]{1,2}(\.[0-9]+)?%?$/

Última edición por Ronruby; 19/08/2008 a las 23:07 Razón: Corregir
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 03:16.