2011-02-17 53 views
0

我有一个很早以前由自由职业者编写的脚本,直到现在都工作得很好。该脚本只是根据一些匹配规则检查表单中的电子邮件地址并返回true/false。问题出于某种原因,它不能识别具有非常简单的[email protected]语法的电子邮件地址(没有额外的句号或字符等)。从javascript验证无法识别的电子邮件地址

我不明白JavaScript以及我理解的PHP,所以如果有人可以告诉我为什么这个脚本将返回false的电子邮件地址格式如上所示,我会非常感激。

function check_email(str) { 
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; 
    if (!str.match(re)) { 
    return false; 
    } else { 
    return true; 
    } 
} 
+3

这是错误在很多方面的阵列,需要更新。使用这里找到一个:http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – 2011-02-17 20:42:49

+1

此外,这可能被重构为`返回str.match(重新)`。保存你的心皮隧道,直到你变老。 – 2011-02-17 20:44:10

回答

0

它应该工作,RegExp是有效的。

您确定您的电子邮件是在最后/开始的空白处剪掉吗?如果有人在结尾处留下尾部空格或在开头处悬挂尾部空格,则它将不起作用,因为它仅接受开始处的字母数字字符和结尾(域)处的a-zA-Z字符。空白是我能带来的唯一能打破它的东西。

你可以重构它一下缩短到只返回匹配值,因为它返回匹配或空(等于为false comparisions)

function check_email(str) { 
    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/); 
}