Foros del Web » Programando para Internet » Javascript »

Ayuda con expresion regular

Estas en el tema de Ayuda con expresion regular en el foro de Javascript en Foros del Web. Hola, Estoy validando un campo en el que se meten numeros de telefono, mi funcion es esta function validar_telefonos(valor){ if(/^(\d{9})*(\s{1}\d{9})*$/.test(valor)){ document.form_contactos.telefono.focus(); return true; }else{ alert("Introduzca ...
  #1 (permalink)  
Antiguo 02/03/2009, 04:29
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 7 meses
Puntos: 0
Ayuda con expresion regular

Hola,

Estoy validando un campo en el que se meten numeros de telefono, mi funcion es esta

function validar_telefonos(valor){
if(/^(\d{9})*(\s{1}\d{9})*$/.test(valor)){
document.form_contactos.telefono.focus();
return true;
}else{
alert("Introduzca los números de teléfonos separados por un espacio\nFormato: 999999999 999999999");
return false;
}

}

lo que quiero es que puedan dejarlo en blanco, meter un telefono o varios, y en el supuesto de que metan varios obligarles a que lo separen con un espacio pero no consigo que me funcione, tambien he probado a sustituir \s por \x20 y un monton de combinaciones mas pero no lo consigo, alguien puede ayudarme

Gracias
  #2 (permalink)  
Antiguo 02/03/2009, 05:01
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con expresion regular

Tu problema no es el \s. Tu problema está en el primer *

Tu expresión es:
Código:
/^(\d{9})*(\s{1}\d{9})*$/
que se puede ver como 2 grupos:
Código:
(\d{9})*
y
Código:
(\s{1}\d{9})*
Entiendo que lo que quieres decir es "un bloque de 9 números" (el primer grupo) y luego "N bloques de (un espacio + 9 números)". Pero en realidad, en el primer grupo al ponerle el asterisco estás diciendo "N bloques de 9 números" (y luego "N bloques de (un espacio + 9 números)" que esa parte está bien).

Así que, resumiendo, lo que tienes que hacer es:

Código:
/^(\d{9})(\s{1}\d{9})*$/
  #3 (permalink)  
Antiguo 02/03/2009, 05:08
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con expresion regular

Por cierto, que quizá sería buena idea hacer la validación un poco más flexible. Que pueda aceptar más de un espacio o que acepte separar por comas o por coma y espacio...

Código:
"123456789   123456789,123456789, 123456789 123456789"
No porque lo vayan a poner así, si no porque diferentes personas pueden preferir separarlo de diferentes formas.


Si quieres hacer eso usa:

Código:
/^(\d{9})([\s,]+\d{9})*$/
  #4 (permalink)  
Antiguo 02/03/2009, 06:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Ayuda con expresion regular

Muchas gracias, ahora me funciona a la perfeción, con las vueltas que le había dado.

Agradezco el consejo, en otras ocasiones si me vendra bien hacerlo mas flexible pero en este caso no puedo por exigencias del cliente
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:34.