2013-09-26 93 views
0

我有mongoid字段「」作爲像「Sivatha(聖329)」,我字符串中使用的正則表達式,用於經由AJAX查詢值如下所示:查詢mongoid字符串以括號

Street.any_of({ :value => /.*#{params[:q]}.*/i })) 

,而我的PARAMS價值是它引起的錯誤「Sivatha(聖」,而我打字,和它沒有返回結果在所有的時候我有精確值「Sivatha(聖329)」。

這裏有人可以給我一些建議嗎?謝謝。

回答

2

你應該插它們放入一個正則表達式之前報價與Regexp.quote字符串:

:value => /.*#{Regexp.quote(params[:q])}.*/i 

你不需要的前端和後端.*,他們不會爲你做些什麼,所以你可以只說:

:value => /#{Regexp.quote(params[:q])}/i 

如果你不使用不區分大小寫的正則表達式,那麼你可以使用Regexp.union引用,並一次全部的正則表達式,IFY您的字符串:

:value => Regexp.union(params[:q]) 

但有沒有乾淨的方式來添加/i選項,所以/#{Regexp.quote(params[:q])}/i可能是你可以做的最乾淨的事情。

+0

是的,謝謝所有:-)我得到它非常好。我還發現** Regexp.escape(params [:q])**,它產生的結果與** Regexp.quote(params [:q])完全相同** – Sinal