关于regex:javascript正则表达式电子邮件验证

JavaScript Regular Expression Email Validation

本问题已经有最佳答案,请猛点这里访问。

此代码总是警告"null",这意味着字符串与表达式不匹配。

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/

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


我用这个函数已经有一段时间了。它返回一个布尔值。

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}$/

允许@([email protected])之前的+


参加聚会有点晚,但什么都没有…

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

我建议在客户端代码中保持非常开放的状态,然后更为重要的是,发送一封带有链接的电子邮件,以真正检查它是否"有效"(就像在语法上对其提供商有效,而且也不要拼写错误)。

像这样:

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

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

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


最好使用:

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

这允许域,如:whatever.info(结尾4个字母)

也用于测试,使用

pattern.test("[email protected]")

如果有效,则返回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 !
}