JavaScript正则expression式电子邮件validation

对于上帝的爱,我没有得到这个简单的代码工作! 它始终警告“空”,这意味着该string不匹配expression式。

var pattern = "^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$"; function isEmailAddress(str) { str = "azamsharp@gmail.com"; alert(str.match(pattern)); return str.match(pattern); } 

如果将正则expression式定义为string,则所有反斜杠都需要转义,所以不要使用'\ w',而应该使用'\\ w'。

或者,将其定义为正则expression式:

 var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/; 

顺便说一句,请不要validation客户端的电子邮件地址。 无论如何,你的正则expression式太简单了,无法传递一个稳定的实现。

在这里看到真实的东西: http//www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

这是我在我的网页上使用的那个。

http://www.zparacha.com/validate-email-address-using-javascript-regular-expression/

/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/

我一直在使用这个函数。 它返回一个布尔值。

 // Validates email address of course. function validEmail(e) { var filter = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/; return String(e).search (filter) != -1; } 

您可能对这个问题感兴趣(或者这个问题 ),这突出了通过正则expression式来识别有效的电子邮件地址是一个非常难以解决的问题(如果可以解决的话)

 function isEmailAddress(str) { var pattern =/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; return pattern.test(str); // returns a boolean } 

您可能有兴趣查看此页面 ,列出用于validation电子邮件地址的正则expression式,以涵盖更一般的情况。

用更简单的正则expression式

这里是 :

 var regexEmail = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; var email = document.getElementById("txtEmail"); if (regexEmail.test(email.value)) { alert("It's Okay") } else { alert("Not Okay") } 

祝你好运。

有时大部分注册和login页面需要validation电子邮件。 在这个例子中你将学习简单的电子邮件validation。 首先在html中input一个文本input,然后像这样input一个button

 <input type='text' id='txtEmail'/> <input type='submit' name='submit' onclick='checkEmail();'/> <script> function checkEmail() { var email = document.getElementById('txtEmail'); var filter = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (!filter.test(email.value)) { alert('Please provide a valid email address'); email.focus; return false; } } </script> 

你也可以使用这个正则expression式来检查

 <input type='text' id='txtEmail'/> <input type='submit' name='submit' onclick='checkEmail();'/> <script> function checkEmail() { var email = document.getElementById('txtEmail'); var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (!filter.test(email.value)) { alert('Please provide a valid email address'); email.focus; return false; } } </script> 

检查这个你可以在这里查看的演示输出

 function checkEmail() { var email = document.getElementById('txtEmail'); var filter = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (!filter.test(email.value)) { alert('Please provide a valid email address'); email.focus; return false; } } 
 <input type='text' id='txtEmail'/> <input type='submit' name='submit' onclick='checkEmail();'/> 

电子邮件validation很容易出错。 因此我build议你使用Verimail.js 。

为什么?

  • 语法validation(根据RFC 822)。
  • IANA TLDvalidation
  • 对最常见的TLD和电子邮件域进行拼写build议
  • 拒绝临时的电子邮件帐户域名,如mailinator.com
  • jQuery插件支持

Verimail.js的另一个好处是,它对最常见的电子邮件域名和已注册的顶级域名(TLD)有拼写build议。 这可以大大降低您的跳出率,为拼写错误的常见域名,如gmail.com,hotmail.com,aol.com,aso ..

例:

如何使用它?

最简单的方法是下载并在您的网页上包含verimail.jquery.js 。 之后,通过在需要validation的input框上运行以下function来连接Verimail:

 $("input#email-address").verimail({ messageElement: "p#status-message" }); 

消息元素是一个可选元素,显示诸如“无效的电子邮件..”或“你的意思是test@gmail.com?”的消息。 如果您有一个表单,并且只有在电子邮件通过validation后才能继续,则可以使用getVerimailStatus函数,如下所示:

 if($("input#email-address").getVerimailStatus() < 0){ // Invalid email }else{ // Valid email } 

getVerimailStatus函数根据对象Comfirm.AlphaMail.Verimail.Status返回一个整数代码。 如上所示,如果状态是一个负整数值,那么validation应该被视为失败。 但是,如果值大于或等于0,那么validation应该被视为成功。

晚会不多,但这里什么也没有…

 function isEmailValid(emailAdress) { var EMAIL_REGEXP = new RegExp('^[a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[az]{2,15})$', 'i'); return EMAIL_REGEXP.test(emailAdress) } 

http://jsfiddle.net/yrshaikh/xvd6H/

你也可以尝试这个expression式,我已经testing了很多电子邮件地址。

 var pattern = /^[A-Za-z0-9._%+-]+@([A-Za-z0-9-]+\.)+([A-Za-z0-9]{2,4}|museum)$/; 

我一直在使用这一个….

 /^[\w._-]+[+]?[\w._-]+@[\w.-]+\.[a-zA-Z]{2,6}$/ 

它允许在@ (xyz+abc@xyz.com)之前,

检查电子邮件语法简单但function强大

 var EmailId = document.getElementById('Email').value; var emailfilter = /^[\w._-]+[+]?[\w._-]+@[\w.-]+\.[a-zA-Z]{2,6}$/; if((EmailId != "") && (!(emailfilter.test(EmailId ) ) )) { msg+= "Enter the valid email address!<br />"; } 

您应该记住,az,AZ,0-9,。,_和 – 不是电子邮件地址开头的唯一有效字符。

例如,Gmail可以在地址上加一个“+”号来“伪造”不同的电子邮件(例如someone@gmail.com也会将电子邮件发送给someone+else@gmail.com)。

micky.o'finnagan@wherever.com不会感激你的代码,阻止他们input他们的地址…撇号是完全有效的电子邮件地址。

上面提到的有效的电子邮件地址的封闭“检查”,正如它自己所说,是非常天真的:

http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/format/emailaddress.js#198

我build议你的客户端代码非常开放,然后更重量级的发送一个链接的电子邮件,以确保它是“有效的”(如在语法上有效的提供者,也没有拼写错误)。

像这样的东西:

var pattern = /[^@]+@[-az\.]\.[az\.]{2,6}/

请记住,理论上你可以在电子邮件地址中有两个@符号,而且我甚至没有在域名中包含latin1以外的字符!

http://www.eurid.eu/en/eu-domain-names/idns-eu

http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx

最好使用:

var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,4}$/;

这允许域如: whatever.info (最后4个字母)

也要testing,使用

pattern.test("exampleemail@testing.info")

如果有效,则返回true

http://www.w3schools.com/js/js_obj_regexp.asp

 var emailRegex = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([\.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i; if(emailRegex.test('yoursamplemail')) alert('valid'); else alert('invalid'); 

您可以将一个函数添加到string对象

 //Add this wherever you like in your javascript code String.prototype.isEmail = function() { return !!this.match(/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/); } var user_email = "test.email@example.com"; if(user_email.isEmail()) { //Email is valid ! } else { //Email is invalid ! }