JavaScript正则表达式电子邮件验证

时间:2009-06-02 16:40:50

标签: javascript regex

此代码始终提示"null",这意味着字符串与表达式不匹配。

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

}

17 个答案:

答案 0 :(得分:65)

如果将正则表达式定义为字符串,则需要对所有反斜杠进行转义,因此不应使用'\ w'而应使用'\\ w'。

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

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

BTW,请不要在客户端验证电子邮件地址。无论如何,你的正则表达式太简单了,无法通过实现。

在此处查看真实内容: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

答案 1 :(得分:26)

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

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

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

答案 2 :(得分:13)

我一直在使用这个功能。它返回一个布尔值。

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

答案 3 :(得分:11)

您可能对this question(或this one)感兴趣,这突出了通过regexp识别有效电子邮件地址这一事实是一个非常难以解决的问题(如果可以解决的话)

答案 4 :(得分:8)

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

答案 5 :(得分:7)

更简单

这是:

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")

}
祝你好运。

答案 6 :(得分:7)

有时,大多数注册和登录页面都需要验证电子邮件。在此示例中,您将学习简单的电子邮件验证。 首先在html中输入文本输入,然后按这样的按钮输入

<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>

你也可以使用这个正则表达式检查

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

如果电子邮件无效,则提供警报消息,如果有效电子邮件则没有警报消息。 有关正则表达式的更多信息

https://www.w3schools.com/jsref/jsref_obj_regexp.asp

希望它会帮助你

答案 7 :(得分:5)

电子邮件验证很容易出错。因此,我建议您使用Verimail.js

<强>为什么吗

  • 语法验证(根据RFC 822)。
  • IANA TLD验证
  • 针对最常见的TLD和电子邮件域的拼写建议
  • 拒绝临时电子邮件帐户域名,例如mailinator.com
  • jQuery plugin support

Verimail.js的另一个好处是它对最常见的电子邮件域和注册顶级域名有拼写建议。对于拼错常见域名的用户,例如gmail.com,hotmail.com,aol.com,aso,这会大大降低您的跳出率。

示例:

  • test@gnail.com - &gt;你的意思是test@gmail.com?
  • test@hottmail.con - &gt;你的意思是test@hotmail.com?

如何使用?

最简单的方法是在您的网页上下载并添加verimail.jquery.js。 之后,通过在需要验证的输入框上运行以下函数来连接Verimail:

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

message元素是一个可选元素,显示诸如“Invalid email ..”或“您的意思是test@gmail.com?”之类的消息。如果您有一个表单并且只想在验证电子邮件后继续,您可以使用函数getVerimailStatus,如下所示:

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

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

答案 8 :(得分:5)

您可能有兴趣查看此page列出正则表达式,以验证涵盖更多一般情况的电子邮件地址。

答案 9 :(得分:3)

我一直在用这个......

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

它允许在+ @

之前(xyz+abc@xyz.com)

答案 10 :(得分:2)

你也可以尝试这个表达式,我已经针对很多电子邮件地址进行了测试。

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

答案 11 :(得分:2)

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

答案 12 :(得分:2)

晚会很晚,但这里什么都没有......

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/

答案 13 :(得分:1)

检查电子邮件语法的简单但功能强大的电子邮件验证:

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 />";
}

答案 14 :(得分:0)

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

例如,Gmail允许您在地址中加上“+”符号以“伪造”不同的电子邮件(例如someone@gmail.com也会将电子邮件发送给某人@else@gmail.com)。

micky.o'finnagan@wherever.com不会感谢您的代码阻止他们输入他们的地址...撇号在电子邮件地址中完全有效。

关闭上面提到的有效电子邮件地址的“检查”,正如它所表明的那样,非常天真:

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

我建议您在客户端代码中非常开放,然后更重量级,比如发送带有链接的电子邮件,以确认它是“有效的”(在语法上对其提供商有效,并且也没有拼写错误)。

这样的事情:

var pattern = /[^@]+@[-a-z\.]\.[a-z\.]{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

答案 15 :(得分:0)

最好使用:

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

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

还要使用

进行测试

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

如果有效则返回true

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

答案 16 :(得分:-1)

您可以向String Object

添加一个函数
//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 !
}