我试图做一个函数来查找包含数组中所有单词的字符串。
我已经试过了:
function multiSearchOr(text, searchWords){
var searchExp = new RegExp(searchWords.join("|"),"gi");
return (searchExp.test(text))?"Found!":"Not found!";
}
alert(multiSearchOr("Hello my name sam", ["Hello", "is"]))
Run Code Online (Sandbox Code Playgroud)
但是,只有找到其中一个单词时,此警报才会“找到”。
当所有单词都在字符串中时,我需要它来提醒我。
一个例子:
var sentence = "I love cake"
var words = ["I", "cake"];
Run Code Online (Sandbox Code Playgroud)
我希望应用程序在从字符串句子中的数组中找到所有单词时提醒我。当它只找到其中一个词时就没有。
如果您只想使用一个正则表达式,则在构造表达式时需要使用正向先行。它看起来像这样:
'(?=\\b' + word + '\\b)'
Run Code Online (Sandbox Code Playgroud)
有了这种构造,您就可以创建正则表达式并测试匹配项:
function multiSearchOr(text, searchWords){
var regex = searchWords
.map(word => "(?=.*\\b" + word + "\\b)")
.join('');
var searchExp = new RegExp(regex, "gi");
return (searchExp.test(text))? "Found!" : "Not found!";
}
Run Code Online (Sandbox Code Playgroud)