unico - Validar direcciones de correo electrónico utilizando jQuery y regex
expresiones regulares (9)
No estoy muy seguro de cómo hacer esto. Necesito validar direcciones de correo electrónico utilizando expresiones regulares con algo como esto:
[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:/.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)
Entonces necesito ejecutar esto en una función jQuery como esta:
$j("#fld_emailaddress").live(''change'',function() {
var emailaddress = $j("#fld_emailaddress").val();
// validation here?
if(emailaddress){}
// end validation
$j.ajax({
type: "POST",
url: "../ff-admin/ff-register/ff-user-check.php",
data: "fld_emailaddress="+ emailaddress,
success: function(msg)
{
if(msg == ''OK'') {
$j("#fld_username").attr(''disabled'',false);
$j("#fld_password").attr(''disabled'',false);
$j("#cmd_register_submit").attr(''disabled'',false);
$j("#fld_emailaddress").removeClass(''object_error''); // if necessary
$j("#fld_emailaddress").addClass("object_ok");
$j(''#email_ac'').html('' <img src="img/cool.png" align="absmiddle"> <font color="Green"> Your email <strong>''+ emailaddress+''</strong> is OK.</font> '');
} else {
$j("#fld_username").attr(''disabled'',true);
$j("#fld_password").attr(''disabled'',true);
$j("#cmd_register_submit").attr(''disabled'',true);
$j("#fld_emailaddress").removeClass(''object_ok''); // if necessary
$j("#fld_emailaddress").addClass("object_error");
$j(''#email_ac'').html(msg);
}
}
});
});
¿A dónde va la validación y cuál es la expresión?
ACTUALIZACIONES
- http://so.lucafilosofi.com/jquery-validate-e-mail-address-regex/
- usando nueva expresión regular
- soporte adicional para etiquetas de dirección (signo +)
function isValidEmailAddress(emailAddress) {
var pattern = /^([a-z/d!#$%&''*+/-//=?^_`{|}~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]+(/.[a-z/d!#$%&''*+/-//=?^_`{|}~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]+)*|"((([ /t]*/r/n)?[ /t]+)?([/x01-/x08/x0b/x0c/x0e-/x1f/x7f/x21/x23-/x5b/x5d-/x7e/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]|//[/x01-/x09/x0b/x0c/x0d-/x7f/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]))*(([ /t]*/r/n)?[ /t]+)?")@(([a-z/d/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]|[a-z/d/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF][a-z/d/-._~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]*[a-z/d/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])/.)+([a-z/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]|[a-z/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF][a-z/d/-._~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]*[a-z/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])/.?$/i;
return pattern.test(emailAddress);
}
if( !isValidEmailAddress( emailaddress ) ) { /* do stuff here */ }
- NOTA: ¡ tenga en cuenta que no existe una verificación de correo electrónico 100% regex !
Esta es mi solución:
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+/.[a-zA-Z]{2,4}$/i);
// alert( pattern.test(emailAddress) );
return pattern.test(emailAddress);
};
Encontré ese RegExp aquí: http://mdskinner.com/code/email-regex-and-validation-jquery
Javascript:
var pattern = new RegExp("^[_A-Za-z0-9-]+(//.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(//.[A-Za-z0-9]+)*(//.[A-Za-z]{2,})$");
var result = pattern .test(str);
La expresión regular no está permitida para:
[email protected]
[email protected]..
Permitido por:
[email protected]
[email protected]
Fuente: http://www.mkyong.com/regular-expressions/10-java-regular-expression-examples-you-should-know/
Le recomendaría que use el plugin jQuery para Verimail.js .
¿Por qué?
- Validación IANA TLD
- Validación de sintaxis (según RFC 822)
- Sugerencia de ortografía para los dominios de TLD y correo electrónico más comunes
- Denegar dominios temporales de cuenta de correo electrónico como mailinator.com
¿Cómo?
Incluya verimail.jquery.js en su sitio y use la función:
$("input#email-address").verimail({
messageElement: "p#status-message"
});
Si tiene un formulario y desea validar el correo electrónico en el envío, puede usar la función getVerimailStatus:
if($("input#email-address").getVerimailStatus() < 0){
// Invalid email
}else{
// Valid email
}
Lolz esto es mucho mejor
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^([/w-/.]+@([/w-]+/.)+[/w-]{2,4})?$/);
return pattern.test(emailAddress);
};
Prueba esto
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^([a-zA-Z0-9_/./-])+/@(([a-zA-Z0-9/-])+/.)+([a-zA-Z0-9]{2,4})+$/);
return pattern.test(emailAddress);
};
También podemos utilizar la expresión regular (/^([/w.-]+)@([/w-]+)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((().pdf) el formato es correcto o no.
var emailRegex = new RegExp(/^([/w/./-]+)@([/w/-]+)((/.(/w){2,3})+)$/i);
var valid = emailRegex.test(emailAddress);
if (!valid) {
alert("Invalid e-mail address");
return false;
} else
return true;
puedes usar esta función
var validateEmail = function (email) {
var pattern = /^([a-z/d!#$%&''*+/-//=?^_`{|}~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]+(/.[a-z/d!#$%&''*+/-//=?^_`{|}~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]+)*|"((([ /t]*/r/n)?[ /t]+)?([/x01-/x08/x0b/x0c/x0e-/x1f/x7f/x21/x23-/x5b/x5d-/x7e/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]|//[/x01-/x09/x0b/x0c/x0d-/x7f/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]))*(([ /t]*/r/n)?[ /t]+)?")@(([a-z/d/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]|[a-z/d/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF][a-z/d/-._~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]*[a-z/d/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])/.)+([a-z/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]|[a-z/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF][a-z/d/-._~/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]*[a-z/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])/.?$/i;
if (pattern.test(email)) {
return true;
}
else {
return false;
}
};
$(document).ready(function() {
$(''#emailid'').focusout(function(){
$(''#emailid'').filter(function(){
var emil=$(''#emailid'').val();
var emailReg = /^([/w-/.]+@([/w-]+/.)+[/w-]{2,4})?$/;
if( !emailReg.test( emil ) ) {
alert(''Please enter valid email'');
} else {
alert(''Thank you for your valid email'');
}
})
});
});