Validar direcciones de correo electrónico utilizando jQuery y regex

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])?\.)+(?:[AZ]{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('   Your email '+ emailaddress+' is OK. '); } 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


 function isValidEmailAddress(emailAddress) { var pattern = /^([az\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[az\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]+)?")@(([az\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[az\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][az\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[az\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([az\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[az\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][az\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[az\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

 $(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'); } }) }); }); 

Lolz esto es mucho mejor

  function isValidEmailAddress(emailAddress) { var pattern = new RegExp(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/); return pattern.test(emailAddress); }; 

Le recomendaría que use el plugin jQuery para Verimail.js .

¿Por qué?

  • Validación IANA TLD
  • Validación de syntax (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 } 

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:

 abc@gmail..com abc@gmail.com.. 

Permitido por:

 abc.efg@gmail.com abc@gmail.com.my 

Fuente: http://www.mkyong.com/regular-expressions/10-java-expression-expression-examples-you-should-know/

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; 

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); }; 

puedes usar esta función

  var validateEmail = function (email) { var pattern = /^([az\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[az\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]+)?")@(([az\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[az\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][az\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[az\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([az\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[az\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][az\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[az\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i; if (pattern.test(email)) { return true; } else { return false; } };