Javascript正则表达式来检测字符串是否有两个@&引用;查斯?
我试图做一个简单的验证,一个字符串只包含一个电子邮件地址。我猜最简单的方法就是寻找重复的“@”字符,如果是这样的话,就拒绝它。我有这段代码,我在regex101上测试了regex,它工作得非常好。但现在我什么也没得到,因为它在页面上:Javascript正则表达式来检测字符串是否有两个@&引用;查斯?,javascript,regex,Javascript,Regex,我试图做一个简单的验证,一个字符串只包含一个电子邮件地址。我猜最简单的方法就是寻找重复的“@”字符,如果是这样的话,就拒绝它。我有这段代码,我在regex101上测试了regex,它工作得非常好。但现在我什么也没得到,因为它在页面上: function checkemail(input){ var validformat=/^.*@.*@+.*?/ var returnval=false if (!validformat.test(input.value)) alert("Invalid ema
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是的,我同意。我添加它作为一个建议,供人们搜索更精确的东西,而不仅仅是检查两个@符号。谢谢!这正是我做错的。哇!