Search code examples
javascriptregexsearchindexoftext-search

Javascript find index of word in string (not part of word)


I am currently using str.indexOf("word") to find a word in a string. But the problem is that it is also returning parts of other words.

Example: "I went to the foobar and ordered foo." I want the first index of the single word "foo", not not the foo within foobar.

I can not search for "foo " because sometimes it might be followed by a full-stop or comma (any non-alphanumeric character).


Solution

  • You'll have to use regex for this:

    > 'I went to the foobar and ordered foo.'.indexOf('foo')
    14
    > 'I went to the foobar and ordered foo.'.search(/\bfoo\b/)
    33
    

    /\bfoo\b/ matches foo that is surrounded by word boundaries.

    To match an arbitrary word, construct a RegExp object:

    > var word = 'foo';
    > var regex = new RegExp('\\b' + word + '\\b');
    > 'I went to the foobar and ordered foo.'.search(regex);
    33