Stai usando il metodo .replace in maniera non corretta.

Il primo parametro di replace deve essere una stringa (contenente una regexp), non una oggetto tipo RegExp.

Inoltre le barre dentro la regexp non sono corrette (devi togliere gli apici, oppure le barre).

In conclusione prova questa sintassi:
codice:
function applica(str,sost) {
  return str.replace(/\[{2}(.*?)\]{2}/g, '<div id="gap" identifier="' + $1 + '"/>');
}
Nota che poi crei codice HTML errati: non ci possono essere due oggetti con lo stesso id in una stessa pagina - credo devi sostituire 'id=' con 'class='.