Поиск слова или нескольких слов в строке
Собственно стоит цель подсветить совпадения слов с соблюдением определенных условий в строке.
примерно такие могут быть строки:
Awesome testTest stringStringtest (test test)Stringtest Test/TestStringtest Test/Stringtest long test
Искать нужно то что введено в input, например слово test.
Есть несколько условий поиска:
- Начинать поиск в только вначале каждого слова. то есть если ищем слово
testStringtestне подходит по совпадению. - Слова могут быть разделены пробелом,
/, и могут находится в скобках (test test)
немогу понять как правильно записать все условия для поиска. Тому что в input можно ввести ( и ) и регулярка ломается
вот рабочий пример
реализацию я понимаю так:
в компоненте заменяем все вхождения слова с помощью регулярки.
Ответы (1 шт):
Немного допилил регулярку учитывая комментарии по вопросом. Теперь она ищет по словах начиная сначала слова.
Вспомогательная функция
function escapeRegExp(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');}
финальный вариант который заработал для меня:
const pattern = `\\b${escapeRegExp(inputText)}`;
так как в input можна ввести скобки, из за которых сломается поиск в строке. Потому я их экранирую, а уже потом использую.