已知一个字符串,需要拆分成多维数组并替换内容

已知一个字符串,需要拆分成多维数组

已知的字符串

"content": "评论测试^[表情:开心]^[(196)名片:哥哥]"

已知的表情对应数组

emoji:[{
    'label':'开心',
    'img':'https://xxxxxxx1.jpg'
  },
  {
    'label':'难过',
    'img':'https://xxxxxxx2.jpg'
  },
  ...
]

需要正则和查找emoji并输入如下对象

"content": {
  'text':'评论测试',
  'emoji':{
    'label':'开心',
    'img':'https://xxxxxxx1.jpg'
  },
  'card':{
    'id':'196',
    'name':'哥哥'
  }
}

谢谢

const data = '评论测试^[表情:开心]^[(196)名片:哥哥]'
const emoji = [{
    'label': '开心',
    'img': 'https://xxxxxxx1.jpg'
},
    {
        'label': '难过',
        'img': 'https://xxxxxxx2.jpg'
    },
]

let emojiRegExp = new RegExp(/\[表情:(.*)\]/)
let cardRegExp = new RegExp(/\[\((\d*)\)名片:(.*)\]/)
const result = data.split(/(\^\[.*?\])/g).filter(item => item !== '').reduce((t, i) => {
    if (emojiRegExp.test(i)) {
        t.emoji = emoji.find(item => item.label == emojiRegExp.exec(i)[1])
    } else if (cardRegExp.test(i)) {
        let cardTemp = cardRegExp.exec(i);
        t.card = {id: cardTemp[1], name: cardTemp[2]}
    } else {
        t.text = i
    }
    return t;
}, {});
console.log(result)