Checking the presence of multiple words in a variable using JavaScript

Tags:



The code the presence of a single word in a sentence and it’s working fine.

var str ="My best food is beans and plantain. Yam is also good but I prefer yam porrage"

if(str.match(/(^|W)food($|W)/)) {

        alert('Word Match');
//alert(' The matched word is' +matched_word);
}else {

        alert('Word not found');
}

Here is my issue: I need to check presence of multiple words in a sentence (eg: food,beans,plantains etc) and then also alert the matched word. something like //alert(' The matched word is' +matched_word);

I guess I have to passed the searched words in an array as per below:

var  words_checked = ["food", "beans", "plantain"];

Answer

Here’s a way to solve this. Simply loop through the list of words to check, build the regex as you go and check to see if there is a match. You can read up on how to build Regexp objects here

var str ="My best food is beans and plantain. Yam is also good but I prefer 
          yam porrage"
var words = [
    "food",
    "beans",
    "plantain",
    "potato"
]

for (let word of words) {
    let regex = new RegExp(`(^|\W)${word}($|\W)`)

    if (str.match(regex)) {
        console.log(`The matched word is ${word}`);
    } else {
        console.log('Word not found');
    }
}


Source: stackoverflow