Преобразование строки в регулярное выражение
Описание
Есть поле ввода, где пользователь вводит какой-нибудь текст. Я должен введенный им текст обработать немного и преобразовать в регулярное выражение, чтобы искать с помощью него совпадения в тексте.
Такая небольшая проблема в том, что если я просто возьму и создам regex из ввода, результат будет совершенно неправильным. К примеру:
Текст | Ввод | Совпадения |
---|---|---|
Сообщество здесь, чтобы помочь вам с конкретными проблемами по программированию, алгоритмам, языкам программирования. | я. | яз , я. |
Нам мешают служебные символы и части, как символ .
в примере выше.
Чтобы это предотвратить нам нужно выделять их символом \
.
Вопрос
Есть какой-нибудь встроенный способ безопасного преобразования, как к примеру для ссылок window.encodeURI
?
Если нет, есть ли хороший способ для решения этой задачи, или же просто:
input = input.replace(`/[\$\^\*\(\)\{\}\+\?\[\]\.\?\,\|\\\/\`\_]/g`, `\\$0`);