Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式来检测字符串是否有两个@&引用;查斯?_Javascript_Regex - Fatal编程技术网

Javascript正则表达式来检测字符串是否有两个@&引用;查斯?

Javascript正则表达式来检测字符串是否有两个@&引用;查斯?,javascript,regex,Javascript,Regex,我试图做一个简单的验证,一个字符串只包含一个电子邮件地址。我猜最简单的方法就是寻找重复的“@”字符,如果是这样的话,就拒绝它。我有这段代码,我在regex101上测试了regex,它工作得非常好。但现在我什么也没得到,因为它在页面上: function checkemail(input){ var validformat=/^.*@.*@+.*?/ var returnval=false if (!validformat.test(input.value)) alert("Invalid ema

我试图做一个简单的验证,一个字符串只包含一个电子邮件地址。我猜最简单的方法就是寻找重复的“@”字符,如果是这样的话,就拒绝它。我有这段代码,我在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”。被难住了。希望这是一个简单的东西,我只是没有足够的咖啡来看看…

Regex
test
如果字符串与格式匹配(在您的例子中,如果它包含@x2),则返回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*$/

控制台中有一些错误消息?是拒绝有效的输入还是接受无效的输入?@Thouatamazing这不包括在内。考虑到电子邮件地址的复杂性,最好使用经过良好审查(通常是其他人编写的)的更健壮的电子邮件正则表达式检查实现,或者让你自己的regex如此荒谬地允许,以至于只需检查某人是否输入了某些内容。你能链接一下有效的regex101测试用例吗?看起来您的正则表达式应该是
var invalidformat
,您不需要否定匹配结果…请注意,存在包含多个
@
符号的有效电子邮件地址。@ajp15243是的,我同意。我添加它作为一个建议,供人们搜索更精确的东西,而不仅仅是检查两个@符号。谢谢!这正是我做错的。哇!