报文解压缩
思路: 通过用例发现需要考虑嵌套和不嵌套的情况;
- 通过正则匹配字符串中‘3[k]’这中形式的字符串;
- 判断匹配是否有结果;
- 匹配有结果则取遍历匹配结果arr;
- 每一个子项通过获取到重复次数和重复的字符子串,计算重复的字符串结果并替换到str中;
- 重复1——4部,最后返回str
// 解压密码
// 3[k]2[mn]--kkkmnmn 3[m2[c]]--mccmccmcc
var jieya = function (str) {
let arr = str.match(/\d+\[[a-z]*\]/g);
while(arr) {
for(let i of arr) {
let result = '';
let c = i.match(/\d+/g);
let code = i.match(/(?<=\[)([a-z]*)(?=\])/g);
while(c) {
c--;
result += code;
}
str = str.replace(i,result);
}
console.log(str);
arr = str.match(/\d+\[[a-z]*\]/g);
}
return str;
}