0

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

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

代码:

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

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

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

4

1 回答 1

4

用于Regexp.escape转义变量值:

%r{(?i)(.*)#{Regexp.escape(params[:searchterm])}(.*)}
于 2012-12-02T12:08:35.303 回答