搜索字符串中的单词

Sam*_*das 3 javascript regex

我试图做一个函数来查找包含数组中所有单词的字符串。

我已经试过了:

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)

我希望应用程序在从字符串句子中的数组中找到所有单词时提醒我。当它只找到其中​​一个词时就没有。

Mat*_*ocz 6

如果您只想使用一个正则表达式,则在构造表达式时需要使用正向先行。它看起来像这样:

'(?=\\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)

  • 您可以安全地删除`g`标志。 (2认同)