Skip to content

Use replace() several times with global variables in Node

I want to change several characters in a string in Node Js, and as it is not possible to use .replaceAll(), I am using .replace() with global variables this way:

function toHTML(content) {
    content = content.replace(/[i]/g, "<i>")
    .replace(/[/i]/g, "</i>")
    .replace(/[b]/g, "<b>")
    .replace(/[/b]/g, "</b>")
    .replace(/[u]/g, "<u>")
    .replace(/[/u]/g, "</u>")
    .replace(/[p]/g, "<p>")
    .replace(/[/p]/g, "</p>")
    .replace(/[cite]/g, "<cite>")
    .replace(/[/cite]/g, "</cite>")
    .replace(/[code]/g, "<code>")
    .replace(/[/code]/g, "</code>");
    
    return content;
  }

If I try with the following string:

This is an example

The output is the following:

Th<<<<<<</code><</code></code></code></code>>it<</code></code></code></code>>>p>u>b><<</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>>>>>s <<<<<<</code><</code></code></code></code>>it<</code></code></code></code>>>p>u>b><<</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>>>>>s an <<</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>>>xam<<<</code><</code></code></code></code>>it<</code></code></code></code>>>p>>l<<</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>><</code><</code></code></code></code>>it<</code></code></code></code>>>>

Answer

Or, use (modified) as suggested by @epascarello:

string.replace(/[(/?(i|b|p|code|cite))]/g,"<$1>")