簡體   English   中英

如何轉義reqexp在MongoDB中查找文檔?

[英]How to escape reqexp to find documents in MongoDB?

我通過MongoDB進行了簡單的基於正則表達式的搜索,例如:

router.get('/search', function (req, res, next) {
   var text = req.query.text;

   collection.find({text: new ReqExp(text, 'ig')}, function (err, result) {
      if (err) return next(err);

      return res.status(200).json({result: result});
   }); 
});

如果用戶嘗試搜索諸如javascript MongoDB之類的文本,則可以通過常規異常成功找到所有文檔。 但是,如果他嘗試搜索(javascript則MongoDB會拋出以下異常:

[SyntaxError:無效的正則表達式:/(javascript /:未終止的組]

避免上述輸入錯誤以轉義輸入文本的正確方法是什么?

“(javascript)”的問題在於,它包含特殊字符“(”,並且可以用作模式匹配表達式的一部分。還有許多其他字符也可以作為正則表達式的一部分:[,\\,?, +。每一個都需要用“ \\”進行轉義,以避免對其特殊含義的解釋,例如,如果用戶輸入“(javascript),則將搜索字符串”(javascript“。

以下URL是了解可用作RegExp一部分的模式的很好的來源:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM