用括号查询mongoid字符串

问题描述 投票:0回答:1

我有mongoid字段'value'作为字符串,如“Sivatha(St. 329)”,我使用正则表达式通过ajax查询值如下:

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

它引发了错误,而我的参数值是“Sivatha(St。”,当我打字时,当我有确切的价值时它根本没有返回结果“Sivatha(St. 329)”。

这里有人可以给我一些建议吗?谢谢。

ruby-on-rails regex ruby-on-rails-3 mongodb mongoid
1个回答
2
投票

在将它们插入正则表达式之前,您应该使用Regexp.quote引用字符串:

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

你不需要领先和尾随.*,他们不为你做任何事情,所以你可以说:

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

如果你没有使用不区分大小写的正则表达式,那么你可以使用Regexp.union来引用和regex-ify你的字符串:

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

但是没有干净的方法来添加/i选项,所以/#{Regexp.quote(params[:q])}/i可能是你能做的最干净的事情。

© www.soinside.com 2019 - 2024. All rights reserved.