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

javascript电子邮件正则表达式验证,javascript,regex,Javascript,Regex,我在这个网站上尝试了很多电子邮件regex建议,但是当调用这个函数时,它总是抛出警报。即使是简单的电子邮件地址也无法恢复有效。我做错了什么?请使用以下代码: var re = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/; var email = document.forms["checkout"]["email"].value; if (re.test(email.value)) { re

我在这个网站上尝试了很多电子邮件regex建议,但是当调用这个函数时,它总是抛出警报。即使是简单的电子邮件地址也无法恢复有效。我做错了什么?

请使用以下代码:

var re = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/;
var email = document.forms["checkout"]["email"].value;
if (re.test(email.value)) {
    return true;
} else {
    alert("Invalid email address");
    return false;
}
其中一个是错的(我想)

var email=..value然后if(re.test)(email.value

正则表达式是有效的,但我马上就会谈到这个问题。首先,您必须在该字段中有额外的字符或类似的内容-在控制台中的JS控制台中运行代码只需手动设置电子邮件即可

现在更重要的部分-不要使用正则表达式检查电子邮件-我支持@PeeHaa的建议
^.++.+\..+$
-它很简单并且工作得很好。你的规则对用户限制太多,例如,没有人可以使用.info域的电子邮件,因为它们的结尾只能有2或3个字符。另一个例子是,用户不能在电子邮件中使用
+
,这是有效的(Gmail使用非常有效)。第三个明显的错误是它不能处理非英语名称——比如说西里尔语中的域名也存在


编辑:实际上,您正在将email设置为field.value属性,然后尝试获取email.value,该属性将返回
未定义的

,只需使用
^.+@.+\..+$
。您失败的并不是真正复制@Goving,他并不是在寻求帮助,尽管em的质量很高,但这里不起作用的是代码本身所有验证或正则表达式。
 /* this function is use to check email format and prompt user if it's not correct */
    function IsValidEmailAddress(emailAddress) {
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(emailAddress);
    }
var email = document.forms["checkout"]["email"].value;
if (re.test(email.value)) {