使用正则表达式验证电子邮件

时间:2015-09-17 12:32:41

标签: javascript html regex

我想验证带有正则表达式的电子邮件。以下代码显示了我使用的正则表达式。然而,表单不接受简单的 anystring@anystring.anystring。(anystring是一个字母)。

我错过了什么吗?

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

2 个答案:

答案 0 :(得分:2)

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

“()<> []:; @ \\”!?#$%&安培;'* + - / = ^ _`{} | 〜.a“@üñîçøðé​​.com在技术上(!)是一个正确的电子邮件地址。虽然匹配所有这些疯狂可能不是一个好主意,但这可能是你正在寻找的,并将匹配绝大多数的电子邮件地址今天:

[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的答案。

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

官方标准(没有unicode疯狂):https://tools.ietf.org/html/rfc5322

答案 1 :(得分:-3)

使用当前设置的正则表达式,您只能在开头加上一个字符,在结尾处加上一个字符。正则表达式的有效电子邮件是例如a@test.a

但你不想这样做,所以改为: undoVec = copyVector(v); … v = copyVector(undoVec);

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

现在应该可以了。