0

当我的 node.js-application 中的以下代码执行时,我收到一条错误消息:

SyntaxError: Invalid regular expression: / ha /: Nothing to repeat at new RegExp() at Object.store.findSimilarSongs

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

我的 store.js 中的函数“findSimilarSongs”:

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。

4

1 回答 1

1

它说“没有什么可重复的”,就像您构建的正则表达式一样/*hal*/。这绝对是无效的——你不能从重复运算符开始。我猜你要么想要一个模糊匹配:

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

或字面上的星星:

new RegExp("\\*"+query+"\\*", 'i')
于 2014-04-19T19:00:10.620 回答