2012-12-02 70 views
0

我正在運行最新版本的sinatra和ruby 1.9.3如何在正則表達式中逃避正常字符?

我讓用戶在我的sinatra應用程序中創建一個自定義正則表達式。

代碼:

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

如何逃避#{params[:searchterm]}使用戶無法插入更多的正則表達式?

(如果(.)*user用戶搜索,他得到的結果不應該工作

回答

4

使用Regexp.escape逃離變量值:

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

非常感謝你!;!) –

相關問題