А кто пробовал экранировать пользовательские даные в javascript, чтобы их можно было мотом сунуть в регулярное выражение безопасно?
Например, есть у меня вот такая конструкция:
$('.display').DataTable().search('val1|val2', true, false);
Первый параметр функции search() является регулярным выражением.
Работает, так как val1|val2 является корректной регуляркой. Но если вместо val1 и val2 надо вставить данные из формы, а там может прийти нечто вроде '1.2[ m/s2 ]', то для корректной подстановки в регулярку надо заэкранировать точку, квадратные скобки и слеш.
Погуглил, нашел в основном вот такие решения:
function escapeRegex(string) {
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
},
но каким-то костылем выглядит. Может, есть какое-то более "натуральное" решение?