javascript - 在字符串中搜索单词

标签 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"]))

但这只会在找到其中一个单词时提醒“已找到”。

我需要它在所有单词都在字符串中时提醒我。

一个例子:

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/

相关文章:

javascript - $.proxy, bind, call, apply 的区别

javascript - 我的 Javascript 正在切换所有元素,而不仅仅是一个

javascript - 具有多个属性的对象

java - 返回使用正则表达式找到的字符串

regex - 使用显式编号的重复词代替问号,星号和加号

regex - 替换直到在 PowerShell 中找到模式

javascript - api未在ajax方法中加载,但在脚本标签中加载

javascript - 使用 Node js Promise 链的 For 循环

JavaScript 在字符串的 2 个字符后添加空格但忽略换行符

javascript - 从字符串中获取特定值/参数(keypare)