2016-05-20 9 views
0

私は同じようにMongoDBを経由して、単純な正規表現ベースの検索をしました:ユーザーが正常javascriptのMongoDBのようなテキストを検索、正規の例外により、すべてのドキュメントを検索しようとするとreqexpをエスケープして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は、以下の例外を除いてスロー:

[SyntaxError: Invalid regular expression: /(javascript/: Unterminated group]

上記のようにエラーを防ぐために、入力テキストをエスケープする適切な方法は何ですか?

答えて

0

"(javascript"には特殊文字 "(")が含まれており、パターンマッチ式の一部として使用できます。正規表現としても使用できる他の多くの文字があります:[、例えば、ユーザーが "javascript"という文字列 "(javascript"は検索されているはずです)

のように、その特別な意味の解釈を避けるために、それぞれは "\"でエスケープする必要があります。次のURLは、RegExpの一部として使用できるパターンを理解するための非常に良い情報源です:

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

関連する問題