【发布时间】:2014-04-19 18:46:41
【问题描述】:
当我的 node.js-application 中的以下代码被执行时,我收到一条错误消息:
SyntaxError: Invalid regular expression: /ha/: Nothing to repeat at new RegExp () at Object.store.findSimilarSongs
app.js sn-p:
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,我没有其他方法可以选择执行此任务。
【问题讨论】:
-
A
*在正则表达式中有特殊含义。通过在开头使用它,您已将其置于无效位置。如果您想匹配文字*字符,则需要使用反斜杠对其进行转义。由于 JS 字符串文字使用反斜杠作为特殊字符,因此您也需要转义反斜杠。所以"\\*" + query + "\\*"
标签: javascript regex node.js mongodb mongoskin