replace () con RegExp en elementos de matriz

Quiero escribir una función de JavaScript que convierte algunas etiquetas BBcode simples como [red] [/ red] a etiquetas HTML. Creo que la función replace () es la mejor manera de hacerlo. Escribí una prueba simple para probarlo, pero no parece funcionar.

/**
* @function
* @description Replaces the bb-tags with html-tags
*/
function bbToHtml(form) {
    debugger

    var text = form.text.value;
    bbTags = new Array("[red]", "[yellow]", "[green]", "[/red]", "[/yellow]", "[/green]");
    htmlTags = new Array("<font color='red'>", "<font color='yellow'>", "<font color='green'>", "</font>", "<font>", "</font>");

    for (var i = 0; i < bbTags.length; i++) {
        var re = new RegExp(bbTags[i], "g");
        text = text.replace(re, htmlTags[i]);
    }

    alert(text);
}

Se debe convertir"[red]hello[/red]" a"<font color='red'>hello</font>", pero solo me da una cuerda rara.

¿Qué está mal? Creo que esto tiene algo que ver con mi expresión regular.

Respuestas a la pregunta(3)

Su respuesta a la pregunta