如何逃避正则表达式中的普通字符?

时间:2012-12-02 11:41:22

标签: ruby regex escaping

我正在运行最新版本的sinatra和ruby 1.9.3

我让用户在我的sinatra应用程序中创建自定义正则表达式。

代码:

Posts.all(:message => %r{(?i)(.*)#{params[:searchterm]}(.*)})

如何逃避#{params[:searchterm]}以便用户无法插入更多正则表达式?

(如果用户搜索(.)*user他得到的结果应该不起作用!

1 个答案:

答案 0 :(得分:4)

使用Regexp.escape来转义变量值:

%r{(?i)(.*)#{Regexp.escape(params[:searchterm])}(.*)}