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

时间:2014-05-30 11:42:54

标签: javascript 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;
}

我在这个网站上尝试了很多电子邮件正则表达式的建议,但是当调用该函数时,它总是会抛出警报。甚至简单的电子邮件地址都不会有效。我做错了什么?

3 个答案:

答案 0 :(得分:1)

正则表达式有效但我马上就会知道。首先,你必须在该字段中有额外的字符或类似的东西 - 在控制台的JS控制台中运行代码只需手动设置电子邮件。

现在更重要的部分 - 不要使用正则表达式检查电子邮件 - 我第二次@ PeeHaa建议^.+@.+\..+$ - 它很简单并且运行良好。你的用户太多了,例如,没有人可以使用来自.info域的电子邮件,因为他们最后只能有2或3个字符。另一个例子是,用户无法在有效的电子邮件中使用+(Gmail使用效果很好)。第三件事明显错误就是它无法处理非英文名称 - 例如,西里尔字母也存在。

编辑:实际上,您将电子邮件设置为field.value属性,然后尝试使用 email.value 返回undefined

答案 1 :(得分:0)

var email = document.forms["checkout"]["email"].value;
if (re.test(email.value)) {

其中一个是错的(我认为)

var email = ...... ,然后if(re.test(电子邮件。

答案 2 :(得分:-1)

请使用以下代码:

 /* 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);
    }