Поиск слова или нескольких слов в строке

Собственно стоит цель подсветить совпадения слов с соблюдением определенных условий в строке.

примерно такие могут быть строки:

  1. Awesome test
  2. Test string
  3. Stringtest (test test)
  4. Stringtest Test/Test
  5. Stringtest Test/Stringtest long test

Искать нужно то что введено в input, например слово test.

Есть несколько условий поиска:

  1. Начинать поиск в только вначале каждого слова. то есть если ищем слово test Stringtest не подходит по совпадению.
  2. Слова могут быть разделены пробелом, /, и могут находится в скобках (test test)

немогу понять как правильно записать все условия для поиска. Тому что в input можно ввести ( и ) и регулярка ломается

вот рабочий пример

реализацию я понимаю так:

в компоненте заменяем все вхождения слова с помощью регулярки.


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

Автор решения: Swartex

Немного допилил регулярку учитывая комментарии по вопросом. Теперь она ищет по словах начиная сначала слова.

Вспомогательная функция

function escapeRegExp(text) {  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');}

финальный вариант который заработал для меня:

const pattern = `\\b${escapeRegExp(inputText)}`;

так как в input можна ввести скобки, из за которых сломается поиск в строке. Потому я их экранирую, а уже потом использую.

→ Ссылка