Failix danke für den Code, jetzt kann man dir präziser helfen.
Du denkst zu kompliziert.
Einen Regulären Ausdruck, benötigt man, wenn man ein Muster ersetzen möchte. Ein Muster verwendet man, wenn ein direkter Vergleich zu kompliziert ist, oder wenn man zu viele Ausprägungen hat um alle einzeln zu vergleichen (Dies ist meistens der Fall, wenn man Teile eines kompletten Textes ersetzen möchte).
In deinem Fall, möchtest du einen fixen Ausdruck (stets eine bestimmte Zahl) durch einen entsprechenden Ausdruck ersetzen. Dafür ist ein Regulärer Ausdruck nicht die Beste Wahl. (Du hast das auch selber gemerkt und für jede Zahl eine eigene replace Anweisung geschrieben).
Im Grunde benötigst du einen konkreten Vergleich wie ich in #7 schon geschrieben hatte.
Da du schon eine Map für die Zahlen hast, musst du nur einen Lookup auf diese Map machen:
const nr = 3;
numberWordMap[3]; // => 'drei'
das reicht.
Für einen Fallback kannst du zB || nrverwenden.