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 originalfunction validarEmail(email) {
var carProhibidos = " ;:,/\\|\"\'$#%()=";
for(i = 0; i < carProhibidos.length; i++) {
var noValido = carProhibidos.charAt(i)
if(email.indexOf(noValido, 0) > -1) {
return false;
}
}
var arroba = email.indexOf("@", 1);
if(arroba == -1) {
return false;
} else {
if(email.indexOf("@", arroba + 1) > -1) {
// Si hay otra @ después de la primera
return false;
} else {
var posPunto = email.indexOf(".", arroba + 1);
if(posPunto == -1) {
return false;
} else if(posPunto == arroba + 1) {
return false;
} else {
var ultimaPosicion = posPunto;
while(posPunto > -1) {
// Mientras que no haya más puntos después del anterior
posPunto = email.indexOf(".", ultimaPosicion + 1);
if(posPunto == ultimaPosicion + 1) {
// Hay dos puntos seguidos
return false;
}
if(posPunto > -1) {
// Hará otra iteración
ultimaPosicion = posPunto;
}
}
if(ultimaPosicion + 2 >= email.length || ultimaPosicion + 4 < email.length){
// Si tiene 1 o más de 3 caracteres tras el último punto
return false;
}
}
}
}
return true;
}
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;