匹配两个字符串的Javascript正则表达式

匹配两个字符串的Javascript正则表达式,javascript,regex,Javascript,Regex,我不理解那么多正则表达式,我想创建一个匹配两个字符串的正则表达式 我知道一个字符串的代码是.match(/something/),如果两个字符串中有一个匹配,则代码是.match(/something | sometherthing/) 如何编写一个只在文本中找到两个字符串时才匹配的字符串,例如“google microsoft”要使用单个正则表达式,您需要考虑它们可能以任意顺序出现的事实。(*匹配两个子字符串之间的任何字符): 注意:如果你想做2个以上的子字符串,这将无法控制。3个字符串可以按

我不理解那么多正则表达式,我想创建一个匹配两个字符串的正则表达式

我知道一个字符串的代码是
.match(/something/)
,如果两个字符串中有一个匹配,则代码是
.match(/something | sometherthing/)


如何编写一个只在文本中找到两个字符串时才匹配的字符串,例如“google microsoft”

要使用单个正则表达式,您需要考虑它们可能以任意顺序出现的事实。(
*
匹配两个子字符串之间的任何字符):


注意:如果你想做2个以上的子字符串,这将无法控制。3个字符串可以按
6
不同顺序排列,5个字符串可以按
120
顺序排列,10个子字符串可以按
3628800
不同方式排列!这就是为什么使用语言(Javascript)本身的特性(如在答案中)比尝试使用正则表达式做太多事情要好得多。

您可以只使用
.match
两次

str.match(/google/) && str.match(/microsoft/)
在这种情况下,使用
.indexOf

您还可以使用详细的正则表达式

.match(/google.*microsoft|microsoft.*google/)

对于你的具体问题,其他答案都很好,但正如Paulpro所指出的,当你有两个以上的单词时,你真的会失控

最简单的方法是使用爆炸药丸建议的多重检查

但对于更具可扩展性的仅限正则表达式的方法,您可以使用:

前瞻实际上并不消耗任何东西,因此在检查第一个条件(即
*google
可以匹配)后,您回到字符串的开头,可以检查下一个条件。只有当所有Lookahead都通过时,模式才会通过


请注意,如果您的输入可能包含换行符,
*
将不起作用。您必须使用
[^]*
[\s\s]*
来代替(其他人的答案也是如此)。

我知道我可以使用
匹配
两次,但我希望它与regex一起使用,以便缩短它。。但使用regex似乎比使用
match
twice@Enve短代码不一定是最可读的代码。特别是如果“长”代码已经适合一行或两行,那么使用复杂正则表达式并不是关于长度、可读性和想象力,而是真正的价值在于它的性能。它不必对输入进行两次迭代,因此,如果您有大量输入,则速度会明显加快。
.match(/google.*microsoft|microsoft.*google/)
/^(?=.*google)(?=.*microsoft)(?=.*apple).../