0
我想使用正則表達式來查找使用MongoDB在Express.js上匹配特定模式的記錄。在Express上使用Regex和MongoDB
這裏是我的代碼
var urlList = [];
var db = req.db;
var collection = db.get('project');
var regex = '/^'+url+'/';
console.log('regex = '+regex);
collection.find({url: { $regex: regex, $options: 'i' }},function(err,list){
console.log('length = '+list.length);
var arrayUrl = [];
for (var i=0;i<list.length;i++){
console.log(list[i].url);
arrayUrl.push(list[i].url);
}
});
但我得到list.length = 0,雖然數據庫包含確保與該模式匹配的記錄。
在CMD
db.project.find({url:{$regex:/^Projek-1/,$options: 'i'}});
使用以下命令我得到了我想要的結果。
如何在express.js上使用正則表達式來查找MongoDB數據庫中的匹配記錄?
你逝去的,而不是正則表達式對象的字符串。嘗試使用'新RegExp' – hassansin
您正在使用URL字符串作爲正則表達式?您最有可能必須將其轉義:'var regex = new RegExp(「^」+ url.replace(/ [ - \/\\^$ * +?。()| [\] {}]/g,' \\ $&'),'i');',並從後面的代碼中刪除',$ options:'i''。請檢查。 –
我不確定你是否看到,但'^'只在字符串的開始處使正則表達式匹配。如果要匹配多次出現的模式,則需要將其刪除。 –