Javascript 仅当字符串包含RegExp中指定的所有字符时匹配

Javascript 仅当字符串包含RegExp中指定的所有字符时匹配,javascript,regex,Javascript,Regex,我正在尝试构建一个简单的验证器,它将匹配John@gmail.com但不是John@gmailcom或Johngmail.com-它必须同时包含@和 我正在使用这个-/[@.]/g,但它在仅匹配其中一个字符时进行匹配和测试 有更好的方法吗?您的regexp的问题是[]会告诉您是否存在@或中的一个 如果订单很重要,并且您希望执行@,您可以使用: @.*\. 这将使包含@和的任何字符串与它们之间的任何字符相匹配 如果顺序不重要,我想真的不需要Regexp: myString.includes('@

我正在尝试构建一个简单的验证器,它将匹配John@gmail.com但不是John@gmailcom或Johngmail.com-它必须同时包含@和

我正在使用这个-
/[@.]/g
,但它在仅匹配其中一个字符时进行匹配和测试


有更好的方法吗?

您的regexp的问题是
[]
会告诉您是否存在
@
中的一个

如果订单很重要,并且您希望执行
@
,您可以使用:

@.*\.
这将使包含
@
的任何字符串与它们之间的任何字符相匹配

如果顺序不重要,我想真的不需要Regexp:

myString.includes('@')&&myString.includes('.'))

regexp版本,以便您查看详细信息。

不是最终解决方案,而是更进一步:
^[John@gmail.com]{14} $
(我假设字符可以被洗牌,因为如果“@”后跟点是您对有效电子邮件执行的唯一检查,则肯定的前瞻性,
@.
碰巧也是有效的电子邮件。@UlysseBN我可以承认这只是一个部分答案,但这是友好的还是不友好的?顺便说一句,当我谈论我看到的东西时,你谈论的是你认为别人在想什么,请检查一下你自己是否友好。@challet我真的很困惑。我肯定认为你的评论是在开玩笑,因为你强制检查了
John@gmail.com
,十四次,当时OP只谈论
@
。你的解释也不在那里。我将删除我的评论,很抱歉给您添麻烦。@MonkeyZeus您肯定是对的,我想regexp很难不关心订单。除了像排序之前的字符串这样的技巧。我将删除此位:)@MonkeyZeus你应该再次阅读我的答案。。。OP没有要求将
@
置于
之前,因此我的建议是,如果顺序重要,如果顺序不重要。如果OP想要一个真正的电子邮件验证,那么还有很多参数需要考虑。@UlysseBN-谢谢,完全解决了这个问题。我这一方的基本错误!我认为必须是一个正则表达式,因为我使用的是来自外部来源的数据,这些数据将发生变化,因此,为了将来的证明,它需要处理的不仅仅是电子邮件。在实现了您的建议之后,它现在也可以在其他东西上工作。谢谢