Ver Mensaje Individual
  #10 (permalink)  
Antiguo 15/09/2015, 12:59
jevy99
 
Fecha de Ingreso: julio-2015
Ubicación: Madrid
Mensajes: 17
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Misma expresion regular para html5 y javascript

Buenas.

Muy bueno lo del flag global en el patrón. Ya daba este tema por perdido. De hecho he creado una función para validar el email. Muchísimas gracias.
Ya no es necesaria la función, pero por si a alguien le sirviera, igual que a mi me habéis ayudado no está demás que yo lo intente con otras personas, es esta:
Código Javascript:
Ver original
  1. function validarEmail(email) {
  2.     var carProhibidos = " ;:,/\\|\"\'$#%()=";
  3.     for(i = 0; i < carProhibidos.length; i++) {
  4.         var noValido = carProhibidos.charAt(i)
  5.        
  6.         if(email.indexOf(noValido, 0) > -1) {
  7.             return false;
  8.         }
  9.     }
  10.    
  11.     var arroba = email.indexOf("@", 1);
  12.     if(arroba == -1) {
  13.         return false;
  14.     } else {
  15.         if(email.indexOf("@", arroba + 1) > -1) {
  16.             // Si hay otra @ después de la primera
  17.             return false;
  18.         } else {
  19.  
  20.             var posPunto = email.indexOf(".", arroba + 1);
  21.             if(posPunto == -1) {
  22.                 return false;
  23.             } else if(posPunto == arroba + 1) {
  24.                 return false;
  25.             } else {
  26.  
  27.                 var ultimaPosicion = posPunto;
  28.                 while(posPunto > -1) {
  29.                     // Mientras que no haya más puntos después del anterior
  30.                     posPunto = email.indexOf(".", ultimaPosicion + 1);
  31.                     if(posPunto == ultimaPosicion + 1) {
  32.                         // Hay dos puntos seguidos
  33.                         return false;
  34.                     }
  35.                     if(posPunto > -1) {
  36.                         // Hará otra iteración
  37.                         ultimaPosicion = posPunto;
  38.                     }
  39.                 }
  40.                 if(ultimaPosicion + 2 >= email.length || ultimaPosicion + 4 < email.length){
  41.                     // Si tiene 1 o más de 3 caracteres tras el último punto
  42.                     return false;
  43.                 }      
  44.             }
  45.         }
  46.     }
  47.     return true;
  48. }

En cuanto a lo que dices de la otra expresión regular, no sé si te entiendo. No veo ningún problema en que haya nombres compuestos y si es uno demasiado largo ya tengo puesto un maxlength. Y, como veo que no lo he dicho antes, sólo tengo un input para nombres y apellidos, y por eso lo de permitir espacios.

Muchas gracias.

Un saludo;