Foros del Web » Programando para Internet » Javascript »

Problema con expresion regular

Estas en el tema de Problema con expresion regular en el foro de Javascript en Foros del Web. Hola, resulta que intento validar un campo con javascript y expresiones regulares y siempre me indica que esta mal. La misma expresion regular la uso ...
  #1 (permalink)  
Antiguo 30/04/2012, 06:57
 
Fecha de Ingreso: marzo-2012
Mensajes: 43
Antigüedad: 12 años, 8 meses
Puntos: 3
Problema con expresion regular

Hola, resulta que intento validar un campo con javascript y expresiones regulares y siempre me indica que esta mal. La misma expresion regular la uso en PHP y si me funciona bien.

tiene que validar una cantidad como xxxxx.xx o xxx.xx o xx.xx o xxxx,xx o xxx. o xx.x o xxxx.x

vamos, hasta 5 numeros seguidos opcionalmente de una coma o punto y hasta otros dos numeros mas

Código:
		
if (document.frmalta.importe.value!=""){
       var re = new RegExp('/^([0-9]{1,5})[\.]?[,]?([0-9]{0,2})$/');
	if (!re.test(document.frmalta.importe.value)){
		alert ("El importe no tiene un formato válido");
		document.frmalta.importe.focus();
		return false;
	}
}
Levo tres horas intentando ver que falla y ya me doy por vencido.

Un saludo

Última edición por keko123; 30/04/2012 a las 07:38
  #2 (permalink)  
Antiguo 30/04/2012, 10:44
 
Fecha de Ingreso: marzo-2012
Mensajes: 43
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Problema con expresion regular

Hola, me autorespondo por si a alguien le sirve de ayuda.

Lo he arreglado quitando la llamada al constructor del objeto RegExp y sustitullendolo por un string, tal que

Código:
		
if (document.frmalta.importe.value!=""){
	var re = /^([0-9]{1,5})[\.]?[,]?([0-9]{0,2})$/;
	if (!re.test(document.frmalta.importe.value)){
		alert ("El importe  no tiene un formato válido");
		document.frmalta.importe.focus();
		return false;
	}
}
  #3 (permalink)  
Antiguo 30/04/2012, 10:59
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, 7 meses
Puntos: 1485
Respuesta: Problema con expresion regular

buenas.
el problema era como estabas creando la expresión al pasarlo a RegExp. en ese caso lo único que tenias que indicar era el patrón como string sin los delimitadores (la barra diagonal). aparte, según tu enunciado el patrón está mal: una cifra de hasta 5 dígitos ( [0-9]{1,5} lo tienes bien), opcionalmente seguido de un punto o coma y una cifra de hasta dos dígitos ( [\.]?[,]?([0-9]{0,2}) está mal). está mal porque puedo introducir hasta 7 dígitos sin incluir el punto o coma. además de que se puede introducir ambos símbolos y considerarse como válido. lo correcto sería poner toda la parte opcional como una subexpresión con el cuantificador opcional (?). [0-9]{1,5}([\.,][0-9]{1,2})?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 30/04/2012 a las 11:27
  #4 (permalink)  
Antiguo 30/04/2012, 11:36
 
Fecha de Ingreso: marzo-2012
Mensajes: 43
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Problema con expresion regular

HOla, muchas gracias por tu respuesta. El problema que me ha surgido es que al sustituir mi expresion por la tuya ahora tambien puedo poner por ejemplo:

12345678

Y no me avisa de que el importe tiene formato invalido y lo introduce en la db.

Un saludo
  #5 (permalink)  
Antiguo 30/04/2012, 11:42
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, 7 meses
Puntos: 1485
Respuesta: Problema con expresion regular

¿en serio?
Código:
var reg = /^[0-9]{1,5}([\.,][0-9]{1,2})?$/;
console.log(reg.test('1234567')); // false
console.log(reg.test('12345')); // true
console.log(reg.test('12345.67')); // true
claro, que habia omitido los anclas pero fue solo para simplificar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 30/04/2012, 11:46
 
Fecha de Ingreso: marzo-2012
Mensajes: 43
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Problema con expresion regular

Ahora si, XD. Es que cuando me pusiste la expresion como no ponias el ^ ni el $ pense que a lo mejor no hacia falta y no lo puse. Al añadirlo ya fuinciona bien.

Muchas gracias!!

Etiquetas: expresion, funcion, php, 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 07:41.