面对node.js中正则表达式的问题

时间:2015-08-31 15:15:21

标签: regex node.js express mongoose

我想执行一个查询就像sql中的外卡搜索一样。所以我在nodejs和mongoose中使用正则表达式。当我使用硬代码然后它的工作原理但是当我输入变量时它不会工作。问题出在哪里。< / p>

带硬编码的代码

AlertModel.find({"alertName":{$regex: /.*RTE.*/}}).lean().exec(function (err, result) {
    if(err)
        {
            console.log(err);
        }
    else
        {
          return res.status(200).send(result);
        }
});

但是在使用变量的情况下它不会起作用

var regFiled='/.*RTE.*/';
AlertModel.find({"alertName":{$regex:regFiled}}).lean().exec(function (err, result) {
    if(err)
        {
            console.log(err);
        }
    else
        {
          return res.status(200).send(result);
        }
});

1 个答案:

答案 0 :(得分:0)

您正在使用带字符串值的变量而不是RegExp文字。

更改

var regFiled='/.*RTE.*/';

var regFiled=/.*RTE.*/;

它应该像硬编码版本一样工作。

或者,如果regFiled确实意味着保存表达式的字符串形式,则可以将其转换为RegExp对象:

{$regex:new RegExp(regFiled)}