Foros del Web » Programando para Internet » Javascript »

rango números con expresión regular

Estas en el tema de rango números con expresión regular en el foro de Javascript en Foros del Web. Hola, he intentado validar un campo con un rango de números entre 18 y 99 me hubiese gustado hacerlo mediante una expresión regular, pero no ...
  #1 (permalink)  
Antiguo 05/08/2011, 03:38
 
Fecha de Ingreso: julio-2011
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
rango números con expresión regular

Hola,

he intentado validar un campo con un rango de números entre 18 y 99

me hubiese gustado hacerlo mediante una expresión regular, pero no he dado con la forma, porque está claro que no valdría algo así:

(!/^([18-99])*$/.test(document.getElementById("edad").value))

Al final, como el size="2" del campo de texto y no se puede escribir, por ejemplo, 100...

me ha servido esto:

(document.getElementById("edad").value <18 )

Pero me quedo con la duda de saber cómo podría pintar un rango entre 18 y 99 con una expresión regular

¿alguien me lo podría decir?

:)
  #2 (permalink)  
Antiguo 05/08/2011, 07:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: rango números con expresión regular

buenas,
notese que las expresiones regulares no son habituales para designar un rango de valores ya que estas no comprenden dichos valores. es decir, las expresiones saben lo que son digitos numéricos pero no tienen idea de que valor representa cada uno. no obstante, se puede escribir un patrón que simule la funcionalidad de un rango de valores, pero en ocaciones puede resultar más complicado que hacer una simple comparación en javascript. básicamente consiste en un patrón que enumera casi todos los posibles digitos (o caracteres) que se puede escribir pero controlando el orden. usando como ejemplo del 25 al 75, el patrón podria ser de la siguiente forma.
Código:
var reg  = /^2[5-9]|[3-6]\d|7[0-5]$/;
console.log(reg.test('20')); // false;
console.log(reg.test('35')); // true;
console.log(reg.test('63')); // true;
console.log(reg.test('77')); // false;
más o menos se analiza de la siguiente forma, fijese que casi todas los fragmentos son similares. 2[5-9], literalmente se indica el dígito inicial seguido de un rango. es decir, dicho patrón coincide con valores del 25 al 29. [3-6]\d, se especifican dos rangos, del 3 al 6 y del 0 al 9. coincide con valores del 30 al 69. 7[0-5], similar al primer fragmento. literalmente el dígito 7 seguido de un rango entre 0 al 5. coincide con valores del 70 al 75. en conclusión, no puedes visualizarlo en términos de valores o cantidad, sino en términos de posibles dígitos. este ejemplo es sencillo y debería serte fácil realizar el correspondiente a tu rango. hay otros que son más complicados, especialmente cuando el rango es más abarcador.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 05/08/2011, 08:13
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: rango números con expresión regular

Por cierto, estás confundiendo size con maxlength. Que sólo se vean 2 carácteres no significa que no puedas seguir escribiendo, para eso debes usar maxlength.
Y como ha dicho zerokilled, no creo que las regexps estén pensadas para eso, mejor usar una comparación normal y corriente.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 05/08/2011, 12:16
 
Fecha de Ingreso: julio-2011
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: rango números con expresión regular

Gracias por responder zerokilled y cronos2

tomo nota de vuesrtras sugerencias

voy a probar :)

Etiquetas: rango, regular
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 17:02.