Javascript 正则表达式正好匹配文本中的n个单词

Javascript 正则表达式正好匹配文本中的n个单词,javascript,regex,Javascript,Regex,我目前正在做一个使用正则表达式的搜索 我想找到文本中的单词,而不考虑它们在文本中的位置(文本可以包含换行符)。只有当文本中包含搜索中的所有单词时,正则表达式才应匹配 考虑以下案文: 这是一个测试#也使用@提及的测试 如果我搜索“#测试为@提及”,则应找到此文本 我有以下使用前瞻的正则表达式: /(?=..#测试)。*\n*(?=哪个。*)。*\n*(?=@提及。*)。*/i 不幸的是,这并不像预期的那样有效。我遗漏了什么?您可以使用此前瞻功能,它还将跨换行搜索: ^(?=[\s\S]*#test

我目前正在做一个使用正则表达式的搜索

我想找到文本中的单词,而不考虑它们在文本中的位置(文本可以包含换行符)。只有当文本中包含搜索中的所有单词时,正则表达式才应匹配

考虑以下案文:

这是一个测试#也使用@提及的测试

如果我搜索“#测试为@提及”,则应找到此文本

我有以下使用前瞻的正则表达式:

/(?=..#测试)。*\n*(?=哪个。*)。*\n*(?=@提及。*)。*/i


不幸的是,这并不像预期的那样有效。我遗漏了什么?

您可以使用此前瞻功能,它还将跨换行搜索:

^(?=[\s\S]*#test)(?=[\s\S]*which)(?=[\s\S]*@mentionings)


[\s\s]
用于匹配任何字符,包括换行符。

考虑使用在线正则表达式测试仪轻松测试正则表达式。我建议为什么不将任务拆分为不同的正则表达式?把所有东西都塞进一个正则表达式并不能让它看起来更好。你只需在最后去掉
[\s\s]*$
。谢谢!但是如果我只输入'which'和'@referentings',这也将与文本匹配。是的,如果用户只输入
which
@referentings
,这是正确的。如果匹配的单词少于3个,是否要使匹配失败?如果搜索中的所有单词都包含在文本中,则您已写入。如果用户只输入2个单词,那么
哪个
@提及
,那么这就是这个reges将要做的。