Как посчитать сколько раз встречается слово в тексте

Как на js можно посчитать сколько раз слово встречается в строке, пробую таким способом, оно по идее работает, но встречаю проблему когда в тексте это слово встречается дважды подряд написанным текстом, как можно сделать этот код более правильно?

var textToChange='тест тестовый тесттест' 
alert(textToChange.split('тест').length - 1)

Код в примере выводит 3, хотя правильнее должен выводить 1


Ответы (2 шт):

Автор решения: Vladimir Gonchar

Так Вы же разбиваете строку по вхождению "тест". Оно у Вас 3 раза встречается — вот 3 и показывает. Вам надо разбивать строку по пробелам и искать слово:

const textToChange='текст тест тестовый тесттест' 
alert(textToChange.split(' ').filter( (value) => value === 'тест').length)

→ Ссылка
Автор решения: Aleksandr Belous

Решение вашей задачи:

const textToChange='тест тестовый тесттест'

const getWordsCount = (string) => (string.trim().match(/([^а-я]тест[^а-я]|тест[^а-я])/ig) || []).length

getWordsCount(textToChange) // 1
→ Ссылка