正则表达式检索括号之间的两个变量

Rob*_*ert 2 javascript regex object

我试图在两个双括号之间检索两个变量.到目前为止我有这个:

var regex = /\[\[\s([a-z]+):*\s*([\d])*\s\]\]/g;
var obj = {};
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
    obj[key] = value;
    console.log(obj);
});
Run Code Online (Sandbox Code Playgroud)

结果是:

Object {dogs: "2", cats: "1"}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

Object {dogs: "1", dogs: "2", cats: "1"}
Run Code Online (Sandbox Code Playgroud)

对于我的生活,我无法弄清楚为什么狗只显示第二个身份.

Sci*_*ter 5

这是因为对象不能包含具有相同键的多个项目.dogs第二次设置时,它会覆盖第一个实例.

一些替代解决方案包括创建对象数组:

var regex = /\[\[\s([a-z]+):*\s*([\d])*\s\]\]/g;
var arr = [];
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
    var obj = {};
    obj[key] = value;
    arr.push(obj);
    console.log(arr);
});
Run Code Online (Sandbox Code Playgroud)

或者使用创建数组的对象:

var regex = /\[\[\s([a-z]+):*\s*([\d])*\s\]\]/g;
var obj = {};
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
    if (obj[key]) {
        obj[key].push(value);
    } else {
        obj[key] = [value];
    }
    console.log(obj);
});
Run Code Online (Sandbox Code Playgroud)