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