正则表达式将JSON属性值包装在另一个字符串中。 MongoDB过渡

时间:2012-01-30 02:26:26

标签: javascript regex mongodb

我正在尝试将专有JSON数据库中的一些数据插入到MongoDB中以进行测试。我的数据目前位于json文件中,格式为:

{ "_id": "213124123114",
  "foo":bar",
  "otherId": "2324242424",
  ...
}

为了保持我的测试数据关系不变,我想用sed用ObjectId(...)包装所有_id和xxxId值

我的数据如下:

{ "_id": ObjectId("213124123114"),
  "foo":bar",
  "otherId": ObjectId("2324242424"),
  ...
}

然后我将获取数据并以与文件中显示的格式相同的格式将其插入mongo。

我正在使用javascript测试我的正则表达式,但以下任务分崩离析:

var y = s/"_id":(\s?"[0-9]+"),/ObjectId($1)/gi
  

SyntaxError:意外的令牌:

逃避':'似乎没有做任何事情。

当我在开始时删除捕获标志时,正则表达式分配按预期工作

var y = /"_id":(\s?"[0-9]+"),/
var p = "\"_id\": \"123123123121321212312\",";
y.test(p) === true

但是我无法捕获我需要包装的值块。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

json.replace(/("(?:_id|otherId)": ?)("\d+")/g, '$1ObjectId($2)');

这是一个小提琴:http://jsfiddle.net/7WJBm/1/