我正在尝试进行一个简单的验证,即字符串只包含一个电子邮件地址。我猜这样做的最简单方法是查找重复的“@”字符并拒绝,如果是这种情况。我有这个代码,我在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”。难住了。希望这很简单,我只是没有喝足够的咖啡......
答案 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*$/