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

Javascript regex to detect if a string has two "@" chars?

本文关键字:两个 字符 quot 检测 正则表达式 字符串 是否 Javascript      更新时间:2023-09-26

我正在尝试做一个简单的验证,验证一个字符串是否只包含一个电子邮件地址。我猜,最简单的方法是寻找重复的"@"字符,如果是这样的话,就拒绝。我有这段代码,我在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"。Stumped。希望这是一件简单的事情,我只是没有足够的咖啡看。。。

如果字符串与格式匹配(在您的情况下,如果它包含@x2),则Regex test返回true。所以你想改变你的if条件,使其作用于真值,而不是假值:
if (validformat.test(input.value)) {
    alert("Invalid email format. Please correct and submit again.");
}

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

在JS中验证电子邮件是一项非常乏味的任务,有数百种奇怪的场景可以解释,但这根本不可行。所以你必须在某个地方划清界限。试试这个正则表达式:

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