Подтвердить что ты не робот

Выбери специальные символы в RegEx?

У меня есть форма, которая отправляет содержимое текстового поля в мое приложение Rails и Мне нужно создать регулярное выражение этой строки.

Я пробовал вот так:

regex = /#{params[:text]}/

В общем, это работает, но если в строке содержатся скобки или специальные символы, этот метод не будет работать.

Я не хочу, чтобы Rails заботился о символах. Они должны автоматически сбрасываться.

Я пробовал вот так:

/\Q#{params[:text]}\E/

но это тоже не работает.

4b9b3361

Ответ 1

Вы должны использовать Regexp.escape

regex = /#{Regexp.escape(params[:text])}/
# in rails models/controllers with mongoid use:
# ::Regexp.escape(params[:text]) instead. ([more info][2])

Ответ 2

Regexp.escape экранирует специальные символы:

params[:text] = "[foo-bar]"
Regexp.new(Regexp.escape(params[:text]))
# => /\[foo\-bar\]/