2016-10-11 14 views
0

以下の$ regexオブジェクトの引用符を乗り越えるにはどうすればよいですか?以下はmongo正規表現から引用符を削除する

{ '$or': 
    [ '{"last":{"$regex":"/.*Pat.*/"}}', 
     '{"first":{"$regex":"/.*Pat.*/"}}' ], 
     thing: 57b713625bf9b85ca824de8c } 

私が取ったアプローチですが、私は、オブジェクトの値として式を配置する方法を見つけ出すことはできませんので、そこにもっと良い方法でなければならず、それは動作しません。

for (var key in req.query) { 
if (req.query.hasOwnProperty(key)) { 
    if (key === '$or') { 
    for (var item in req.query[key]) { 
     if (req.query[key].hasOwnProperty(item)) { 
     req.query[key][item] = JSON.parse(req.query[key][item]); 
     for (var x in req.query[key][item]) { 
     for (var thereMustBeABetterWayToDoThis in req.query[key][item][x]){ 
      req.query[key][item][x][thereMustBeABetterWayToDoThis] = req.query[key][item][x][thereMustBeABetterWayToDoThis].replace(/["']/g, ""); 
     } 
     } 
     } 
    } 
    } 
} 
+0

この単語「$ regex」は、あなたが言及した特定のオブジェクト内の '$または'キーでのみ置換する必要がありますか?あるいは、 "$ regex"がどこに現れてもオブジェクト全体から引用符を取り除きたいですか? –

+0

それを行う簡単な方法があればどこでも好きです。 – Mika

答えて

1

あなたが"を削除$regex"$regex"のグローバルな交換をしたいので。 JSONをストリング化して正規表現を置き換えてから、JSONをもう一度解析するだけで簡単な方法があると思います。私はそれがパフォーマンスやタイミングに関して最も効率的であることを確認できないので、簡単に言います。 \\"\$regex\\" - 核心は、この正規表現である

var test = { '$or': 
[ '{"last":{"$regex":"/.*Pat.*/"}}', 
    '{"first":{"$regex":"/.*Pat.*/"}}' ], 
    thing: 57 } 
var test_string = JSON.stringify(test); //Convert it into a string. 

var re = /\\"\$regex\\"/g; 
var output = test_string.replace(re,"$regex"); //Do a simple replace 

var outputObj = JSON.parse(output); //Parse the object. 

//So now you'd want to work with the outputObj 

:あなたの例を与えることを

。私は基本的なdemoを作成しました。この正規表現はどのように動作するのか説明し、あなたのニーズに合わせてこの正規表現をさらに拡張するための遊び場としても役立ちます。

関連する問題