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