JavaScript Regular Expression Email Validation
此代码总是警告
1 2 3 4 5 6 7 8 9 10 | var pattern ="^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$"; function isEmailAddress(str) { str ="[email protected]"; alert(str.match(pattern)); return str.match(pattern); } |
如果将正则表达式定义为字符串,则需要对所有反斜杠进行转义,因此应该使用'w'而不是'w'。
或者,将其定义为正则表达式:
1 | var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/; |
另外,请不要在客户端验证电子邮件地址。对于实体实现来说,正则表达式太简单了,无法传递。
请参阅以下内容:http://www.ex-parrot.com/~pdw/mail-rfc822-address.html
这是我在网页上使用的。
http://www.zparacha.com/validate-email-address-using-javascript-regular-expression/
我用这个函数已经有一段时间了。它返回一个布尔值。
1 2 3 4 5 | // Validates email address of course. function validEmail(e) { var filter = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/; return String(e).search (filter) != -1; } |
您可能对这个问题(或这个问题)感兴趣,它强调了一个事实,即通过regexps识别有效的电子邮件地址是一个非常难解决的问题(如果完全可以解决的话)。
1 2 3 4 | function isEmailAddress(str) { var pattern =/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; return pattern.test(str); // returns a boolean } |
使用更简单的regex
这里是:
1 2 3 4 5 6 7 8 9 | 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") } |
祝你好运。
有时大多数注册和登录页面需要验证电子邮件。在本例中,您将学习简单的电子邮件验证。首先用HTML输入文本,然后像这样输入按钮
1 2 3 4 5 6 7 8 9 10 11 12 13 | <input type='text' id='txtEmail'/> <input type='submit' name='submit' onclick='checkEmail();'/> 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; } } |
也可以使用此正则表达式进行检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <input type='text' id='txtEmail'/> <input type='submit' name='submit' onclick='checkEmail();'/> 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; } } |
检查这个演示输出,你可以在这里检查
1 2 3 4 5 6 7 8 9 | 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; } } |
1 2 | <input type='text' id='txtEmail'/> <input type='submit' name='submit' onclick='checkEmail();'/> |
如果电子邮件无效,则发出警告消息;如果电子邮件有效,则不发出警告消息。有关正则表达式的详细信息
https://www.w3schools.com/jsref/jsref_obj_regexp.asp(网址:www.w3schools.com/jsref/jsref_obj_regexp.asp)
希望它能帮助你
电子邮件验证很容易出错。因此,我建议您使用verimail.js。
为什么?
- 语法验证(根据RFC822)。
- IANA TLD验证
- 最常见TLD和电子邮件域的拼写建议
- 拒绝临时电子邮件帐户域,如mailinator.com
- jquery插件支持
verimail.js的另一个优点是它对最常见的电子邮件域和注册的TLD有拼写建议。对于那些拼写错误的常用域名(如gmail.com、hotmail.com、aol.com、aso.)的用户来说,这会大大降低您的跳出率。
例子:
如何使用?
最简单的方法是在您的页面上下载并包含verimail.jquery.js。之后,通过在需要验证的输入框上运行以下函数来连接Verimail:
1 2 3 | $("input#email-address").verimail({ messageElement:"p#status-message" }); |
message元素是一个可选元素,用于显示诸如"invalid email."或"you mean [email protected]?"。如果您有一个表单,并且只想在验证电子邮件后继续,则可以使用函数getverimailstatus,如下所示:
1 2 3 4 5 | if($("input#email-address").getVerimailStatus() < 0){ // Invalid email }else{ // Valid email } |
getVerimailStatus函数根据对象comfirm.alphamail.verimail.status返回一个整数代码。如上所示,如果状态为负整数值,则验证应视为失败。但如果该值大于或等于0,则验证应视为成功。
您可能有兴趣看看这个页面,它列出了用于验证包含更一般情况的电子邮件地址的正则表达式。
我一直在用这个……
1 | /^[\w._-]+[+]?[\w._-]+@[\w.-]+\.[a-zA-Z]{2,6}$/ |
允许
参加聚会有点晚,但什么都没有…
1 2 3 4 | function isEmailValid(emailAdress) { var EMAIL_REGEXP = new RegExp('^[a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,15})$', 'i'); return EMAIL_REGEXP.test(emailAdress) } |
http://jsfiddle.net/yrshaikh/xvd6h/
1 2 3 4 5 | var emailRegex = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([\.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i; if(emailRegex.test('yoursamplemail')) alert('valid'); else alert('invalid'); |
您也可以尝试这个表达式,我已经对许多电子邮件地址进行了测试。
1 | var pattern = /^[A-Za-z0-9._%+-]+@([A-Za-z0-9-]+\.)+([A-Za-z0-9]{2,4}|museum)$/; |
检查电子邮件语法的简单但功能强大的电子邮件验证:
1 2 3 4 5 | 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 />"; } |
您应该记住,a-z、a-z、0-9、、和-不是电子邮件地址开头的唯一有效字符。
例如,Gmail允许您在地址中输入"+"号来"伪造"另一封电子邮件(例如[email protected]也会收到发送给[email protected]的电子邮件)。
micky.o'[email protected]不希望您的代码阻止他们输入他们的地址…撇号在电子邮件地址中完全有效。
上面提到的有效电子邮件地址的结束"检查"是,正如它所说的,相当不适用?VE:
http://code.google.com/p/closing-library/source/browse/trunk/closing/goog/format/emailaddress.js_198
我建议在客户端代码中保持非常开放的状态,然后更为重要的是,发送一封带有链接的电子邮件,以真正检查它是否"有效"(就像在语法上对其提供商有效,而且也不要拼写错误)。
像这样:
记住,理论上,一个电子邮件地址中可以有两个@符号,而且我甚至没有在域名中包含拉丁语以外的字符!
http://www.eurid.eu/en/eu-domain-names/idns-eu
http://haacked.com/archive/2007/08/21/i-knows-how-to-validate-an-email-address-until-i.aspx
最好使用:
这允许域,如:whatever.info(结尾4个字母)
也用于测试,使用
如果有效,则返回true
http://www.w3schools.com/js/js_obj_regexp.asp
可以向字符串对象添加函数
1 2 3 4 5 6 7 8 9 10 11 12 | //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 ="[email protected]"; if(user_email.isEmail()) { //Email is valid ! } else { //Email is invalid ! } |