繁体   English   中英

Javascript正则表达式来检测一个字符串是否有两个“ @”字符?

[英]Javascript regex to detect if a string has two “@” chars?

我正在尝试做一个简单的验证,即一个字符串仅包含一个电子邮件地址。 我猜想,最简单的方法是查找重复的“ @”字符并在这种情况下拒绝。 我有这段代码,并且我在regex101上测试了regex,它运行良好。 但是,由于它在页面中,因此我什么也没得到:

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”。 难过 希望这很简单,我只是没有足够的咖啡去看...

如果字符串与格式匹配(在您的情况下,如果它包含@ x2),则正则表达式test返回true。 因此,您想更改if条件,使其作用于真实值,而不是false:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM