将变量与RegExp一起使用时获取SyntaxError

Getting a SyntaxError when using a variable with a RegExp

本文关键字:获取 SyntaxError 一起 变量 RegExp      更新时间:2023-09-26

当我的node.js-应用程序中的以下代码被执行时,我得到一个错误:

SyntaxError:无效的正则表达式:/ha/:在Object.store.findSimilarSongs的新RegExp()中没有可重复的内容

app.js片段:

app.get('/search', function (req, res, next) {
    store.findSimilarSongs(req.query.search, function (err, songs) {
        if (err) {
            res.writeHead(500, "An Error occurred");
            next(err);
        }
        else {
            res.writeHead(200, {
                'Content-Type': 'application/json'
            });
            res.write(JSON.stringify(songs));
            searchQuery=[];
        }
        res.end();
    });
});

我的商店.js:中的函数"findSimilarSounds"

findSimilarSongs: function (query, callback) {
        db.music.find({$or:[{'title': new RegExp("*"+query+"*", "i")},{'interpret': new RegExp("*"+query+"*", "i")}]}, callback);
    }

我对正则表达式很陌生,尤其是与mongodb/mongoskin结合使用。在出现错误之前,一切都很正常。错误消息中提到的ha正是我在搜索栏中键入的内容。

遗憾的是,除了javascript/jquery、node.js(modules:express、mongoskin)和mongodb之外,我没有其他方法来完成这项任务。

它说"无需重复",因为您构建的正则表达式是/*hal*/。这肯定是无效的——你不能从重复运算符开始。我猜你要么想要一个模糊匹配:

new RegExp(".*"+query+".*, 'i')

或者一个字面意义上的明星:

new RegExp("''*"+query+"''*", 'i')