Mongoose $ regex不适用于新的RegExp?

时间:2016-10-13 02:06:30

标签: javascript regex node.js mongodb mongoose

我在使用Mongoose进行$ regex查询时遇到了麻烦;

以下工作正常:

Media.count(
    { "filename" : 
    { $regex: /placeholder(-)?(\w+.)?.(\w+)?$/gm } }, 
    function(err, res){
...

以下不起作用:

var xp = new RegExp("placeholder(-)?(\w+.)?.(\w+)?$", "gm")

Media.count(
    { "filename" : 
    { $regex: xp } }, 
    function(err, res){
...

我也尝试了以下不起作用:

var xp = new RegExp("placeholder(-)?(\w+.)?.(\w+)?$")

Media.count(
    { "filename" : 
    { $regex: xp, $options: 'gm' } }, 
    function(err, res){
...

出于某种原因,我觉得Mongoose不接受RegExp对象?我遇到的问题是我需要用变量替换'占位符',因此我需要使用RegExp来完成这个...

任何人在

之前遇到过这个问题

1 个答案:

答案 0 :(得分:0)

我刚刚发现了我的错误,如果其他人遇到同样的问题,请在此处添加:

使用新的RegExp时,您需要确保以这种方式转义反斜杠:

正确的方式:

var xp = new RegExp("placeholder(-)?(\\w+.)?.(\\w+)?$")

错误的方式:

var xp = new RegExp("placeholder(-)?(\w+.)?.(\w+)?$")