JavaScript replace - Jak skutecznie zamieniać tekst?

Miłosz Grabowski .

26 maja 2026

Narzędzie deweloperskie w przeglądarce, panel "Sources", pokazuje kod JavaScript. Widać pole wyszukiwania i zamiany tekstu, gdzie szukane jest "creds" do zamiany na "credentials".
Metoda javascript replace przydaje się wszędzie tam, gdzie trzeba podmienić fragment tekstu bez przebudowy całego napisu: w nazwach produktów, adresach URL, etykietach formularzy czy treściach generowanych dynamicznie. W praktyce wracam do niej wtedy, gdy chcę szybko poprawić dane wejściowe albo ujednolicić formatowanie bez pisania rozbudowanego parsera. W tym artykule pokazuję, jak działa `replace()`, kiedy wystarczy prosty ciąg znaków, kiedy lepiej użyć wyrażenia regularnego i jak uniknąć błędów, które najczęściej psują efekt.

Najkrócej rzecz biorąc, replace zmienia tekst precyzyjnie, ale dopiero dobrze dobrany wzorzec decyduje o efekcie

  • `replace()` zwraca nowy string, a oryginału nie modyfikuje.
  • Przy zwykłym tekście zwykle zamienia tylko pierwsze dopasowanie.
  • Do wielu zamian użyj `replaceAll()` albo wyrażenia regularnego z flagą `g`.
  • Funkcja jako drugi argument daje największą kontrolę nad wynikiem.
  • Najczęstszy błąd to oczekiwanie, że napis zmieni się „w miejscu”.

Czym jest replace i kiedy naprawdę się przydaje

`replace()` to jedna z tych metod, które wyglądają banalnie, ale oszczędzają sporo kodu. Działa na stringu, przyjmuje wzorzec wyszukiwania i wartość zastępczą, a potem zwraca nowy napis. Oryginał zostaje bez zmian, więc jeśli nie zapiszesz wyniku do zmiennej, nic praktycznego się nie wydarzy.

Jak opisuje MDN, metoda obsługuje zarówno zwykły tekst, jak i wyrażenie regularne, a drugi argument może być zwykłym łańcuchem albo funkcją. To daje dużą elastyczność, ale też oznacza, że trzeba świadomie dobrać sposób użycia. Gdy rozumiesz tę różnicę, łatwiej przewidzieć, czy zamiana obejmie jeden fragment, kilka czy całą serię dopasowań.

W mojej praktyce `replace()` pojawia się najczęściej przy porządkowaniu danych z formularzy, korekcie nazw i przygotowywaniu treści do dalszego przetwarzania. Z tego punktu łatwo przejść do najprostszego użycia, bo właśnie tam najczęściej zaczyna się cała historia.

Najprostsza zamiana tekstu w stringu

Jeśli chcesz podmienić konkretny fragment, najpierw zacznij od prostego stringa. To najszybsza i najczytelniejsza wersja, kiedy dokładnie wiesz, czego szukasz i nie potrzebujesz dodatkowej logiki.

const opis = 'Stary plan SEO';
const nowyOpis = opis.replace('Stary', 'Nowy');

console.log(nowyOpis); // Nowy plan SEO
console.log(opis); // Stary plan SEO

Tu ważna jest jedna rzecz: przy takim użyciu metoda zamienia pierwsze dopasowanie. Jeśli tekst występuje tylko raz, sprawa jest zamknięta. Jeśli występuje kilka razy, to nadal zobaczysz zmianę tylko w pierwszym miejscu. To nie jest błąd, tylko normalne zachowanie metody.

Takie podejście ma sens przy poprawianiu nagłówków, nazw statusów, pojedynczych etykiet albo krótkich komunikatów. Gdy jednak trzeba przetworzyć cały ciąg bardziej dokładnie, wchodzą do gry wyrażenia regularne i wtedy warto zmienić sposób myślenia o zamianie. To właśnie tam zaczyna się prawdziwa użyteczność tej metody.

Kod HTML z przykładem użycia `javascript replace` do zamiany tekstu

Kiedy lepszy jest wzorzec regularny

Wyrażenie regularne daje większą precyzję, bo pozwala opisać nie konkretny wyraz, ale cały schemat. Dzięki temu można zamieniać wszystkie spacje, usuwać znaki specjalne, poprawiać format numerów albo reagować na różne warianty zapisu tej samej treści.

const tekst = 'Nowy   kurs   JavaScript';
const slug = tekst.replace(/\s+/g, '-').toLowerCase();

console.log(slug); // nowy-kurs-javascript

W tym przykładzie `\s+` oznacza jedną lub więcej białych znaków, a flaga `g` sprawia, że zamiana obejmuje wszystkie dopasowania. To jest dużo wygodniejsze niż ręczne iterowanie po stringu, zwłaszcza gdy źródłowy tekst pochodzi z formularza, CMS-a albo importu danych.

Flaga Znaczenie Praktyczny efekt
g global Zamienia wszystkie dopasowania, a nie tylko pierwsze
i ignore case Nie rozróżnia wielkości liter
m multiline Traktuje wiele linii jako osobne wiersze dopasowań

Jeśli używasz regexu, pamiętaj też o znakach specjalnych. Kropka, nawiasy, nawiasy kwadratowe czy gwiazdka nie oznaczają już zwykłych znaków, tylko elementy składni. To przydatne, ale łatwo przez to przypadkiem dopasować coś szerszego, niż planowałeś. Kiedy wzorzec zaczyna być zbyt prosty na samą zamianę jednego słowa, przydaje się druga forma `replace()` z funkcją.

Funkcja jako drugi argument daje pełną kontrolę

Drugi argument nie musi być gotowym tekstem. Może być funkcją, która zostanie wywołana dla każdego dopasowania. To świetne rozwiązanie, gdy wynik zależy od treści fragmentu, jego pozycji albo dodatkowego warunku.

const cena = 'Cena: 19.99';
const wynik = cena.replace(/(\d+)\.(\d{2})/, (match, zl, gr) => {
  return `${zl},${gr} zł`;
});

console.log(wynik); // Cena: 19,99 zł

W tym przykładzie funkcja rozbija dopasowanie na części i składa je ponownie w lokalnym formacie. Tak samo można maskować dane, zmieniać kolejność elementów, warunkowo poprawiać wielkość liter albo budować bardziej złożone formaty bez dodatkowych pętli.

To rozwiązanie jest szczególnie wygodne, gdy tekst ma kilka wariantów wejściowych, ale efekt końcowy musi być spójny. W takich przypadkach zwykły string jako zamiennik bywa zbyt sztywny, a funkcja pozwala zareagować na każdy match osobno. Z tego już prosto przejść do porównania `replace()` z `replaceAll()` i do kilku pułapek, które pojawiają się najczęściej.

Kiedy wybrać replaceAll i na co uważać

Jeśli chcesz podmienić wszystkie wystąpienia zwykłego tekstu, `replaceAll()` bywa po prostu wygodniejsze. Nie wymaga budowania regexu tylko po to, żeby zamienić kilka powtórzeń tego samego słowa. W nowoczesnym kodzie front-endowym to często najbardziej czytelna opcja.

Sytuacja Lepszy wybór Dlaczego
Jedno konkretne dopasowanie replace() Najprostszy i najszybszy zapis
Wszystkie wystąpienia zwykłego tekstu replaceAll() Bez regexu i bez dodatkowych flag
Wzorzec z warunkami replace(/.../g, ...) Pełna kontrola nad dopasowaniem
Dynamiczna transformacja replace(..., fn) Możesz reagować na każdy match osobno
MDN zwraca uwagę na ważny szczegół: jeśli w `replaceAll()` używasz wyrażenia regularnego, musi ono mieć flagę `g`. W przeciwnym razie pojawi się błąd `TypeError`. To jedna z tych rzeczy, które łatwo przeoczyć, bo składnia wygląda podobnie do klasycznego `replace()`.
  • Nie zakładaj, że `replace()` zmieni cały string, jeśli podajesz zwykły tekst.
  • Nie zapominaj o przypisaniu wyniku do zmiennej.
  • Nie używaj regexu zbyt szeroko, jeśli chodzi tylko o prostą podmianę słowa.
  • Nie myl literalnego tekstu z wzorcem regex, bo znak `.` czy `*` działa wtedy zupełnie inaczej.
  • Nie pomijaj `g`, jeśli zależy ci na wszystkich dopasowaniach w regexie.

Najkrócej: `replaceAll()` upraszcza zamianę wielu identycznych fragmentów, a `replace()` z regexem i funkcją daje więcej kontroli. W praktyce wybór zależy od tego, czy potrzebujesz prostoty, czy precyzji. Zostaje jeszcze pytanie, jak wykorzystać to sensownie w realnych projektach webowych, bo tam widać największą różnicę.

Jak używam zamiany tekstu w projektach webowych

W projektach webowych najczęściej używam tej metody do porządkowania danych jeszcze przed ich zapisaniem albo wyświetleniem. To może być usunięcie nadmiarowych spacji, zamiana separatorów w slugach, ujednolicenie wielkości liter w filtrach albo zamaskowanie części danych w podglądzie zamówienia. Takie drobne operacje robią ogromną różnicę w spójności interfejsu.

Przy e-commerce i SEO szczególnie dobrze sprawdza się normalizacja nazw kategorii, produktów i adresów przyjaznych użytkownikowi. Jeśli adres URL ma być czytelny, `replace()` często wystarcza do zamiany spacją na myślnik, usunięcia niechcianych znaków i uporządkowania tekstu wejściowego. Jeśli jednak treść jest złożona, ma wiele wyjątków albo wymaga pełnej walidacji, sama zamiana nie wystarczy i lepiej dołożyć osobny etap przetwarzania.

To właśnie tu widać praktyczną granicę tej metody: jest szybka, lekka i bardzo użyteczna, ale nie jest uniwersalnym narzędziem do „naprawiania” tekstu. Gdy traktuję ją jako precyzyjny element większego procesu, działa przewidywalnie i bez zbędnego kodu. I to jest chyba jej największa zaleta w codziennym programowaniu front-endowym.

FAQ - Najczęstsze pytania

Metoda `replace()` służy do zamiany fragmentu tekstu w stringu na inny. Zwraca nowy string, nie modyfikując oryginału. Może przyjmować jako wzorzec zwykły tekst lub wyrażenie regularne, a jako zamiennik string lub funkcję.
`replace()` domyślnie zamienia tylko pierwsze wystąpienie wzorca (jeśli nie użyto flagi `g` w regexie). `replaceAll()` zamienia wszystkie wystąpienia danego tekstu bez potrzeby używania wyrażeń regularnych, co jest wygodniejsze dla prostych zamian globalnych.
Wyrażeń regularnych używa się, gdy potrzebna jest większa precyzja w dopasowaniu wzorca (np. zamiana wszystkich spacji, usuwanie znaków specjalnych, ignorowanie wielkości liter). Flaga `g` jest kluczowa do globalnej zamiany wszystkich dopasowań.
Nie, metoda `replace()` zawsze zwraca nowy string z dokonanymi zmianami. Oryginalny string pozostaje niezmieniony. Ważne jest, aby przypisać wynik `replace()` do nowej zmiennej, jeśli chcemy zachować zmieniony tekst.
Funkcja jako drugi argument daje pełną kontrolę nad procesem zamiany. Jest przydatna, gdy wynik zależy od dopasowanego fragmentu, jego pozycji lub innych warunków. Pozwala na dynamiczne transformacje, np. formatowanie walut, maskowanie danych czy zmianę kolejności elementów.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

javascript replace javascript replace string javascript replace all javascript replace regex javascript replace funkcja js replace przykłady
Autor Miłosz Grabowski
Miłosz Grabowski
Nazywam się Miłosz Grabowski i od 11 lat zajmuję się tworzeniem stron internetowych, e-commerce oraz optymalizacją SEO. Moja przygoda z tymi tematami zaczęła się z pasji do technologii i chęci pomagania innym w budowaniu ich obecności w sieci. Lubię dzielić się wiedzą na temat skutecznych strategii marketingowych oraz technik, które pozwalają na zwiększenie widoczności w internecie. W mojej pracy staram się zawsze dostarczać rzetelne, zrozumiałe i aktualne informacje. Dokładnie sprawdzam źródła, porównuję różne podejścia i upraszczam złożone zagadnienia, aby każdy mógł łatwo zrozumieć, jak skutecznie wykorzystać potencjał swojego biznesu online. Śledzę najnowsze trendy w branży, co pozwala mi na bieżąco dostosowywać moje podejście do zmieniającego się rynku.
Komentarze (0)
Dodaj komentarz