gpt4 book ai didi

javascript - 从 mongo 正则表达式中删除引号

转载 作者:行者123 更新时间:2023-12-03 05:54:53 28 4
gpt4 key购买 nike

如何使用下面 $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, "");
}
}
}
}
}
}

最佳答案

因为您想要用 $regex 全局替换 "$regex" ,删除 "。我认为更简单的方法就是对 JSON 进行字符串化,然后进行正则表达式替换,然后再次解析 JSON。我说简单是因为我无法确认它在性能或计时方面是否是最有效的。

举个例子:

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

关键是这个正则表达式 - \\"\$regex\\"。我创建了一个基本的 demo这将解释此正则表达式的工作原理,并且还可以作为您进一步增强此正则表达式以满足您的需求的 Playground 。

关于javascript - 从 mongo 正则表达式中删除引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39975791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com