当我的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。
答案 0 :(得分:1)
它表示" 无需重复",因为你构建的正则表达式是/*hal*/
。这绝对无效 - 你不能从repetition operator开始。我想你要么想要一个模糊匹配:
new RegExp(".*"+query+".*, 'i')
或文字明星:
new RegExp("\\*"+query+"\\*", 'i')