RegEXP : en action escape

Considérer le code suivant, permettant d'échapper le code HTML (le texte saisie ne doit pas être interprété en HTML).

let p = '<h1>escapeForHTML<h1>';

let regex = /[<&]/gi;

let r = {
  '>' : '&gt;',
  '&' : '&amp;',
  '<' : '&lt;',
}

let f = function(c){
  return r[c];
}

Comparer le résultat des deux écritures :

document.body.insertAdjacentHTML("afterbegin",p);
document.body.insertAdjacentHTML("afterbegin",p.replace(regex,f));

Version compacte !

const escapeForHTML = s => s.replace(/[&<]/g, c => c === '&' ? '&amp;' : '&lt;');

document.body.insertAdjacentHTML("afterbegin",escapeForHTML("<h1> escapeForHTML </h1>"));
document.body.insertAdjacentHTML("afterbegin","<h1> escapeForHTML </h1>");

Version avec Map 

let p = '<h1>escapeForHTML<h1>';

let regex = /[<>&]/gi;

let r = new Map([
  ['>','&gt;'],
  ['&','&amp;'],
  ['<', '&lt;'],
]);

let f = c => r.get(c)

document.body.insertAdjacentHTML("afterbegin",p);

document.body.insertAdjacentHTML("afterbegin",p.replace(regex,f));