Javascript正则表达式检测字符串是否有两个" @"字符?

时间:2014-09-22 15:57:10

标签: javascript regex

我正在尝试进行一个简单的验证,即字符串只包含一个电子邮件地址。我猜这样做的最简单方法是查找重复的“@”字符并拒绝,如果是这种情况。我有这个代码,我在regex101上测试了正则表达式,它运行得很好。但是我现在没有得到任何东西,因为它在页面中:

function checkemail(input){
var validformat=/^.*@.*@+.*?/
var returnval=false
if (!validformat.test(input.value))
alert("Invalid email format. Please correct and submit again.")
else{ returnval=true
}
if (returnval==false) input.select()
return returnval
}

我称之为:

<form action="storemessage.php" method="POST" onSubmit="return checkemail(this.recipemail)">

该字段的名称是“recipemail”。难住了。希望这很简单,我只是没有喝足够的咖啡......

2 个答案:

答案 0 :(得分:0)

如果字符串与格式匹配,则正则表达式test返回true(在您的情况下,如果它包含@ x2)。因此,您希望更改if条件以对真值执行操作,而不是false:

if (validformat.test(input.value)) {
    alert("Invalid email format. Please correct and submit again.");
}

也许您应该将正则表达式重命名为invalidformat

答案 1 :(得分:0)

在JS中验证电子邮件是一项非常繁琐的任务,您可以考虑数百种奇怪的情况,但这根本不可行。 所以你必须在某处画线。 试试这个正则表达式:

/^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/