使用带有RegExp的变量时获取SyntaxError

时间:2014-04-19 18:46:42

标签: javascript regex node.js mongodb mongoskin

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

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

功能" findSimilarSongs"在我的store.js:

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。

1 个答案:

答案 0 :(得分:1)

它表示" 无需重复",因为你构建的正则表达式是/*hal*/。这绝对无效 - 你不能从repetition operator开始。我想你要么想要一个模糊匹配:

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

或文字明星:

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