Natknąłem się na zaskakujący (dla mnie) fakt.
console.log("asdf".replace(/.*/g, "x"));
Dlaczego dwie zastępstwa? Wygląda na to, że jakikolwiek niepusty ciąg bez znaków nowej linii da dokładnie dwa zamienniki dla tego wzorca. Za pomocą funkcji zamiany widzę, że pierwsza zamiana dotyczy całego łańcucha, a druga pustego łańcucha.
"aa".replace(/b*/, "b")
skutkiem było babab
. W pewnym momencie ustandaryzowaliśmy wszystkie szczegóły implementacji przeglądarek internetowych.
"asdf".match(/.*/g)
return [„asdf”, „”]