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

Email validation with regex

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

我想用regex验证电子邮件。下面的代码显示了我使用的正则表达式。但是表单不接受简单的[email protected]。(任何字符串都是字母)。

我错过什么了吗?

1
2
3
4
5
6
7
8
9
10
11
12
window.onload = function () {
    document.getElementById("form").onsubmit = validate;
}

function validate() {
    var email = document.getElementsByTagName("input")[6].value;
    var regex = /^\w@\w+\.\w$/;
    if (!regex.test(email)) {
        alert("enter a valid email");
        return false;
    } else return true;
}


除非您确定输入的电子邮件地址将与该格式匹配,否则应考虑使用更匹配的正则表达式。

"())>,[,];@!γ%$&AM'*+/=?^ ' {} ~?A"@"?????e_.com在技术上是!!)一个正确的电子邮件地址。虽然匹配所有这些疯狂可能不是一个好主意,但这可能是您正在寻找的,并且将匹配今天绝大多数电子邮件地址:

1
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

同样,如果您确定您的电子邮件地址将采用最初的格式,请使用valinho的答案。

有关将电子邮件地址与正则表达式(包含上述regex)匹配的有趣文章:http://www.regular-expressions.info/email.html

官方标准(无Unicode疯狂):https://tools.ietf.org/html/rfc5322


使用当前设置的正则表达式,您只需要在开头和结尾分别添加一个字符。您的regex的有效电子邮件是@test.a。

但你不想这样,把它改成:var regex = /^\w+@\w+\.\w{2,3}$/;

您错过了加号字符,这意味着您可以输入至少一个或多个字符。顶级域通常由两个或三个字符组成,因此您可以限制它。

现在应该可以了。