String. prototype. replace()
Zwraca nowy napis, w którym pierwsze dopasowanie wzorca (albo wszystkie, przy fladze g) zamieniono na inny tekst.
- Zwraca
- Nowy napis po zamianie. Jeśli nic nie pasowało, napis bez zmian.
- Zmienia oryginał
- Nie
Przykład
#const message = 'Witaj w kursie HTML. HTML jest prosty!'
console.log(message.replace('HTML', 'CSS'))
console.log(message.replace(/HTML/g, 'CSS'))
console.log(message)Definicja i zastosowanie
#Metoda replace() szuka wzorca i zwraca nowy napis z podmienionym fragmentem. Gdy wzorcem jest zwykły tekst, zamieniane jest tylko pierwsze wystąpienie. Oryginalny napis pozostaje bez zmian, więc wynik trzeba zapisać do zmiennej.
Wzorcem może być wyrażenie regularne. Z flagą g zamienione zostaną wszystkie dopasowania, a z flagą i wielkość liter przestanie mieć znaczenie. W tekście zastępczym specjalne sekwencje wstawiają fragmenty dopasowania: $& to całe dopasowanie, a $1, $2 to kolejne grupy w nawiasach.
Zamiast tekstu możesz przekazać funkcję. Zostanie wywołana dla każdego dopasowania, a to, co zwróci, trafi do wyniku. Pozwala to np. przeliczać liczby w tekście albo zamieniać słowa na podstawie słownika.
Składnia
#string.replace(pattern, replacement)Parametry
#pattern
string | RegExp
Tekst lub wyrażenie regularne do znalezienia. Tekst zamienia tylko pierwsze wystąpienie, a wyrażenie z flagągwszystkie.replacement
string | function
Tekst wstawiany w miejsce dopasowania (może zawierać$&,$1itd.) albo funkcja, która dostaje dopasowanie i grupy, a zwraca tekst zastępczy.
Więcej przykładów
#const date = '2026-09-28'
const polish = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3.$2.$1')
console.log(polish)const receipt = 'Kurs 100 zł, e-book 40 zł'
const halfPrice = receipt.replace(/(\d+) zł/g, (match, amount) => `${amount / 2} zł`)
console.log(halfPrice)const review = 'Świetny kurs! JAVASCRIPT i javascript to to samo.'
console.log(review.replace(/javascript/gi, 'JavaScript'))Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Aby zamienić wszystkie wystąpienia zwykłego tekstu, użyj
replaceAll()albo wyrażenia z flagąg. Samoreplace("a", "b")zmieni tylko pierwsze. - Znak
$w tekście zastępczym ma specjalne znaczenie. Dosłowny znak dolara zapiszesz jako$$albo zwrócisz go z funkcji. - Budując wyrażenie regularne z tekstu użytkownika, pamiętaj o znakach specjalnych, takich jak
.,*czy?. Dla zwykłego tekstu bezpieczniejsze jestreplaceAll()z napisem.
Powiązane hasła
#- String.prototype.replaceAll()Zwraca nowy napis, w którym wszystkie wystąpienia wzorca zamieniono na podany tekst lub wynik funkcji.
- String.prototype.match()Dopasowuje napis do wyrażenia regularnego. Zwraca tablicę z dopasowaniem lub wszystkimi dopasowaniami albo null.
- RegExpWyrażenie regularne, czyli wzorzec do wyszukiwania, sprawdzania i zamiany fragmentów tekstu.
- String.prototype.split()Dzieli napis na tablicę fragmentów według separatora: znaku, tekstu lub wyrażenia regularnego.
- Template literalsSzablony tekstowe w odwróconych apostrofach: wstawiają wartości przez ${} i mogą zajmować wiele linii.
Widzisz błąd albo brakuje przykładu? Napisz do nas.