|    
			
				25/03/2008, 09:12
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: septiembre-2006 
						Mensajes: 28
					 Antigüedad: 19 años, 1 mes Puntos: 0 |  | 
  |   Re: Expresion Regular Telefonos 
  Mira he aqui el codigo que he resuelto hasta ahoraobserva que cuando pierdo el foco la funcion evalua que tipo es si es de 7 0 9 digitos y listo, pero me surge un gran problema nuevamente......
 
 resulta que tengo varios formatos por ejemplo el de nueve digitos
 que es un patron de var pat = new Array(2,3,2,2);que cumple para
 99-999-99-99 pero se puede dar esto 9-999-99-99 que tambien es valido
 ya no seria de 9 sino de 8 entonces tocaria crear una opcion para esto,
 resulta que comence a observar esto y tengo patrones que pueden ser mas o menos digitos de los acostumbrados para dar el formato, y la verdad ya no que hacer para esto, debido a que este codigo se volveria gigantesto estoy pensando en volverlo mas dinamico espero me dar alguna idea al respecto y gracias.
 
 
 <input name="txtTelefono" value="" onblur="ValidarFormatoTelefono(this,'-',true);">
 
 function ValidarFormatoTelefono(objeto,sep,numeros){
 if(objeto.value){
 valor = objeto.value
 largo = valor.length
 valor = valor.split(sep)
 valor2 = ''
 
 for(r=0;r<valor.length;r++){
 valor2 += valor[r]
 }
 if ((numeros)){
 for(z=0;z<valor2.length;z++){
 if(isNaN(valor2.charAt(z))){
 letra = new RegExp(valor2.charAt(z),"g")
 valor2 = valor2.replace(letra,"")
 }
 }
 }//Fin if(numeros)
 
 switch(largo){
 case 7: //telefono normal
 valor = ''
 valor3 = new Array()
 //var re1 = /^\d{3}\D?\d{2}\D?\d{2}$/
 var pat = new Array(3,2,2);
 
 for(s=0; s<pat.length; s++){
 valor3[s] = valor2.substring(0,pat[s])
 valor2  = valor2.substr(pat[s])
 }
 for(q=0;q<valor3.length; q++){
 if(q ==0){
 valor = valor3[q]
 
 }
 else{
 if(valor3[q] != ""){
 valor += sep + valor3[q]
 }
 }
 }
 break
 case 9:
 //telefono con indicativo
 //var re6 = /\D*\d{1,2}\D*\d{3}\D?\d{2}\D?\d{2}$/
 //telefono solo con indicativo 99-999-99-99
 valor = ''
 valor3 = new Array()
 var pat = new Array(2,3,2,2);
 for(s=0; s<pat.length; s++){
 valor3[s] = valor2.substring(0,pat[s])
 valor2  = valor2.substr(pat[s])
 }
 for(q=0;q<valor3.length; q++){
 if(q ==0){
 valor = valor3[q]
 
 }
 else{
 if(valor3[q] != ""){
 valor += sep + valor3[q]
 }
 }
 }
 break
 
 
 default:
 valor=valor.slice(0,(valor.length-1));
 alert('Formato Telefonico No Valido');
 // objeto.value="";
 
 
 }
 objeto.value = valor;
 }
 }
 
 <input name="txtTelefono" value=""  onblur="ValidarFormatoTelefono(this,'-',true);">
     |