我正在尝试创建一个函数来查找包含数组中所有单词的字符串。
我试过这个:
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"]))
但这只会在找到其中一个单词时提醒“已找到”。
我需要它在所有单词都在字符串中时提醒我。
一个例子:
var sentence = "I love cake"
var words = ["I", "cake"];
我希望应用程序在字符串句子中找到数组中的所有单词时提醒我。不是当它只找到一个单词时。
最佳答案
如果您只对使用单个正则表达式感兴趣,那么在构建表达式时需要使用正向先行。它看起来像这样:
'(?=\\b' + word + '\\b)'
鉴于此结构,您可以创建正则表达式并测试匹配:
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!";
}
关于javascript - 在字符串中搜索单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44604794/