Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/02/2007, 11:44
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Duda sobre expresiones regulares

Las expresiones regulares buscan por caracteres, en un string. No tienen función para detectar si un número es mayor a otro. Para eso tendrás que extraer el número en cuestión de la cadena en la que está contenida (aquí si que puedes utilizar expresiones regulares) para después compararlo mediante un if de toda la vida.

Lo que sí puedes hacer es para números mayores de 99 detectar por ejemplo que tengan mas de dos cifras, o algo por el estilo. Pero no podrás saber si es un número mayor que 56, a no ser que trates el 57 58 59 y todos los números que empiecen por 6,7,8,9, y además todos los que tienen más de dos cifras. No sé si me explico.

Hay una manera de escribir condiciones tal y como hacemos los if y elses dentro de las expresiones regulares, de ese modo sí que podrías identificar el 5 y hacer algo así como: Si es de dos cifras: Si hay un 5 mirar la siguiente cifra->encajar si esa cifra es 6,7,8,9. Pero javascript no soporta esa sintaxis de condicionales.

Por ejemplo, esta expresión regular:
Código:
//sólo menores que 56   
var regExp=/^(([0-4]?[0-9])|(5[0-5]))$/;
Te va a encontrar sólo los números menores que 56 (vale desde el 0 al 55, negativos no).
Lo que busca primero son los numeros naturales del 0 al 49 (la primera cifra es opcional) o, si no incide, que la cadena empiece por 5 y acabe con [1-5].

Sólo de esta manera podrás encajar números mayores o menores que otro número, espero haberme explicado.

Si tuvieras un rango de números (mayor que 13 pero menor que 46) lo que yo haría simplemente es una expresión para mayores que 13 y otra para menores de 46 y pondría un if( regExp1.test(num) && regExp2.test(num) ) para andarme con simplificaciones. Si tuvieras que escribir ese jolgorio en una sola expresión regular se alargaría demasiado con los ((opcion1)|(opcion2)|(opcion3)|...(opcionN)).


Espero que lo entiendas, si tienes dudas planteamelas aquí he intentaré resolvertelas.

Un saludo
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 05/02/2007 a las 13:33 Razón: un error mio