Javascript 使用regex进行电子邮件验证

Javascript 使用regex进行电子邮件验证,javascript,html,regex,Javascript,Html,Regex,我想用正则表达式验证电子邮件。下面的代码显示了我使用的正则表达式。然而,该表格不接受简单的anystring@anystring.anystring. (anystring是字母) 我遗漏了什么吗 window.onload = function () { document.getElementById("form").onsubmit = validate; } function validate() { var email = document.getElementsByT

我想用正则表达式验证电子邮件。下面的代码显示了我使用的正则表达式。然而,该表格不接受简单的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;
}

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

但是您不希望这样,所以将其更改为:
var regex=/^\w+@\w+\.\w{2,3}$/


您缺少加号字符,这意味着您可以输入至少一个或多个字符。顶级域通常由两个或三个字符组成,因此可以对其进行限制


现在它应该工作。

< P>除非你确实知道输入的电子邮件地址将与那个格式匹配,你应该考虑使用一个匹配更多的正则表达式。 “()[]:,;@\\”!#$%&'*+-/=^_`{}| ~.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的答案

关于将电子邮件地址与正则表达式匹配的有趣读物(包含上述正则表达式):


和官方标准(没有Unicode疯狂):

你只允许在开始和结束的时候有一个单词字符。你可能想要像<>代码> \W+
中间添加这个/^ \W+@ [AZ-ZZ] +?[AZ-Z] {2,3}。$/;正则表达式更长、更复杂。我更改了正则表达式。但它仍然不起作用。是否还有其他可能出错的地方?事实上,甚至一个简单的表达式似乎都不起作用。这可能是我的浏览器设置有问题吗?“顶级域通常由两个或三个字符组成“-这是真的。这并不意味着告诉拥有不寻常电子邮件地址的人他们的电子邮件地址不是真实的是个好主意。