Это то, что я пробовал до сих пор:

Я получаю:

function template(str, obj){
  let new_str = str;

  for (let key in obj) 
  {
       new_str = new_str.replace(new RegExp(key, 'g'), obj[key]);
  }
 console.log(new_str);
}

template("Hi [name], your balance is [balance]", { name: "Joe", balance: 1200 });

, но я ожидаю:

"Hi [Joe], your 1200 is [12000]"

Андрес Мартин

"Hi Joe, your balance is 12000"

Вы также можете рассмотреть используя только одно регулярное выражение с функцией-заменителем, чтобы упростить код:

function template(str, obj) {
  let new_str = str;

  for (let key in obj) {
    new_str = new_str.replace(new RegExp('\['   key   '\]', 'g'), obj[key]);
  }
  console.log(new_str);
}

template("Hi [name], your balance is [balance]", {
  name: "Joe",
  balance: 1200
});

Если то, что содержится в квадратных скобках, всегда будет существовать в объекте, тогда нет необходимости в условном операторе:

const template = (str, obj) => str.replace(
  /[([^]]*)]/g,
  (match, possibleKey) => obj[possibleKey] ? obj[possibleKey] : match
);

console.log(template("Hi [name], your balance is [balance]", {
  name: "Joe",
  balance: 1200
}));

Вам нужно сопоставить {* } тоже. Используйте литералы шаблона и оберните ключ в

const template = (str, obj) => str.replace(
  /[([^]]*)]/g,
  (_, key) => obj[key]
);

console.log(template("Hi [name], your balance is [balance]", {
  name: "Joe",
  balance: 1200
}));

в своем [] javascript — AngularJS — Перезагрузите страницу через 5 секунд после того, как индикатор выполнения станет 100 % — Переполнение стека [] Я хотел бы перезагрузить страницу через 5 секунд один раз индикатор выполнения — 100 % & # xA ; & # xA ; КОД У меня ЕСТЬ: & # xA ; & # xA ; & amp ; lt ;! DOCTYPE HTML {*. ..} {амп ***} {*** GT} RegExp

function template(str, obj){
  let new_str = str;

  for (let key in obj) 
  {
       new_str = new_str.replace(new RegExp(`\[${key}\]`, 'g'), obj[key]);
  }
 console.log(new_str);
}

template("Hi [name], your balance is [balance]", { name: "Joe", balance: 1200 });