Javascript 正则表达式只接受字母数字字符和一个@符号

Javascript 正则表达式只接受字母数字字符和一个@符号,javascript,regex,Javascript,Regex,我正在编写一个javascript,如果接受的值不是字母数字字符和符号。-@,它应该会发出警报 我已经使用了下面的表达式,但担心的是我只需要@symbol出现一次。我该怎么做 !/^[ A-Za-z0-9_.-@]*$/ 您可以查找尽可能多的不是“@”的接受字符,然后只查找一个“@”,然后再查找任意数量的接受字符。\w元字符也将替换您的A-Za-z0-9部分,因此您可以使用以下内容: !/^[ \w.-]*@[ \w.-]*$/ 如果可以不完全由正则表达式驱动,则可以使用查看@是否已在字符串

我正在编写一个javascript,如果接受的值不是字母数字字符和符号。-@,它应该会发出警报

我已经使用了下面的表达式,但担心的是我只需要@symbol出现一次。我该怎么做

!/^[ A-Za-z0-9_.-@]*$/

您可以查找尽可能多的不是“@”的接受字符,然后只查找一个“@”,然后再查找任意数量的接受字符。
\w
元字符也将替换您的
A-Za-z0-9
部分,因此您可以使用以下内容:

!/^[ \w.-]*@[ \w.-]*$/

如果可以不完全由正则表达式驱动,则可以使用查看
@
是否已在字符串中。如果是,我们不允许,否则我们允许

如果字符不是
@
,我们就用正则表达式测试它

document.getElementById('input-test')。addEventListener('keydown',e=>{
让值=e.currentTarget.value
设key=e.key
如果((value.includes('@')&&key='@')| |!!key.match(/[\sA-Za-z0-9.\-@]/)==false)e.preventDefault()
})

您可以给出一些示例输入,以及它们是否应该匹配吗?您可以检查该值是否包含@
str.contains('@')
如果可以不使用100%正则表达式,您是否尝试编写正则表达式来验证电子邮件地址?如果你用谷歌搜索他们,网上会有很多这样的信息(如果你不想输入一个电子邮件地址,还是用谷歌搜索一个电子邮件正则表达式,看看它是如何工作的——它们都只允许1个
@
字符)@Risha我从你下面的评论中看到,你正在尝试验证电子邮件地址。不要这样做。无法使用正则表达式有效验证电子邮件。您需要通过向电子邮件发送邮件来验证电子邮件,并通过打开激活链接(而不是使用正则表达式)来确认用户已收到电子邮件。到目前为止,您描述的所有内容都是错误的,对于许多有效的电子邮件地址,这些内容都将失败。@GetOffMyLawn不,它们确实不正确。您最多可以检查是否至少出现一个
@
,其他任何内容都可能出错。电子邮件地址验证需要非常宽松,并且依赖于将邮件发送到该地址。为了简短起见,
^[\w.-]*@[\w.-]*$
感谢您的建议,我编辑了我的答案,将其包括在内。它对我不起作用。匹配的字符串可以是-risha123@但是像risha@@或risha这样的字符串是不可接受的。因此,@是强制性的,应该只出现一次@jacob@Risha正如你所看到的,只有第二行是匹配的汉克斯很多人,我正确地验证了,它适合我@revo我正处于学习阶段,我们都会犯错误,这就是我们在这里的原因。:)我使用了一个简单的Javascript-Risha_EmailValidation(){var Name=serviceForm.Risha_Dict_1.Emailaddress.getValue();if(!/^[a-Za-z0-9.-@]*$/.test(Name)){alert(“电子邮件地址可以包含字母数字字符和符号-连字符(-)、下划线(_)或句点(.)。它必须包含一个@symbol。“);}}@Risha对于电子邮件地址来说,这根本不是真的。它们可以包含
+
,以及数千个其他字符。糟糕的电子邮件验证对您的用户来说是可怕的,请重新考虑您的方法。这不是为了最终用户体验,而是为了研究目的,我只能通过regex进行验证@米加