Javascript Regexp executa um loop em todas as correspondências

Estou tentando fazer algo semelhante com o editor de texto rico do estouro de pilha. Dado este texto:

[Text Example][1]

[1][http://www.example.com]

Eu quero fazer um loop cada[string][int] encontrado, que faço desta maneira:

var Text = "[Text Example][1]\n[1][http: //www.example.com]";
// Find resource links
var arrMatch = null;
var rePattern = new RegExp(
  "\\[(.+?)\\]\\[([0-9]+)\\]",
  "gi"
);
while (arrMatch = rePattern.exec(Text)) {
  console.log("ok");
}

Isso funciona muito bem, alerta 'ok' para cada[string][int]. No entanto, o que preciso fazer é, para cada correspondência encontrada, substituir a correspondência inicial pelos componentes da segunda correspondênci

Então, no loop, $ 2 representaria a parte int originalmente correspondida e eu executaria esse regexp (pseduo)

while (arrMatch = rePattern.exec(Text)) {
    var FindIndex = $2; // This would be 1 in our example
    new RegExp("\\[" + FindIndex + "\\]\\[(.+?)\\]", "g")

    // Replace original match now with hyperlink
}

Isso corresponderia a

[1][http://www.example.com]

O resultado final do primeiro exemplo seria:

<a href="http://www.example.com" rel="nofollow">Text Example</a>
Edita

Cheguei até aqui agora:

var Text = "[Text Example][1]\n[1][http: //www.example.com]";
// Find resource links
reg = new RegExp(
  "\\[(.+?)\\]\\[([0-9]+)\\]",
  "gi");
var result;
while ((result = reg.exec(Text)) !== null) {
  var LinkText = result[1];
  var Match = result[0];
  Text = Text.replace(new RegExp(Match, "g"), '<a href="#">" + LinkText + "</a>');
}
console.log(Text);

questionAnswers(6)

yourAnswerToTheQuestion