Ich stolperte über eine überraschende (für mich) Tatsache.
console.log("asdf".replace(/.*/g, "x"));
Warum zwei Ersetzungen? Es scheint, dass jede nicht leere Zeichenfolge ohne Zeilenumbrüche genau zwei Ersetzungen für dieses Muster erzeugt. Mit einer Ersetzungsfunktion kann ich sehen, dass die erste Ersetzung für die gesamte Zeichenfolge und die zweite für eine leere Zeichenfolge gilt.
"aa".replace(/b*/, "b")
zu dem man führen wollte babab
. Und irgendwann haben wir alle Implementierungsdetails von Webbrowsern standardisiert.
"asdf".match(/.*/g)
return ["asdf", ""]