2016-10-11 2 views
0

아래의 $ regex 객체에서 따옴표를 어떻게 탈 수 있습니까? 다음은 몽고 정규 표현식에서 따옴표를 제거

{ '$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"는 '$ or'키와 언급 한 특정 객체에서만 교체해야합니까? 또는''$ 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을 만들었습니다.

관련 문제