我想执行查询,就像在sql中执行通配符搜索一样,所以我在nodejs和mongoose中使用了regex。当我使用硬代码时,它可以工作,但是当我放入变量时,它就不能工作。

用硬代码编码

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);
        }
});

最佳答案

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

更改

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




var regFiled=/.*RTE.*/;


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

或者,如果regFiled确实旨在保留表达式的字符串形式,则可以使用以下命令将其转换为RegExp对象:

{$regex:new RegExp(regFiled)}

关于regex - Node.js中正则表达式面临的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32314508/

10-11 08:45