String.prototype.replaceAll()

Метод replaceAll() повертає новий рядок, в якому усі збіги з шаблоном замінені вказаним параметром заміни. Шаблон може бути рядком або регулярним виразом, а заміна може бути рядком або функцією, що викликатиметься для кожного збігу.

Початковий рядок лишається незміненим.

Синтаксис

const newStr = str.replaceAll(regexp|substr, newSubstr|function)

Параметри

regexp (шаблон)
Об'єкт або літерал регулярного виразу з глобальним прапором. Збіги замінюються на newSubstr або значення, яке повертає вказана функція function. Регулярний вираз без глобального ("g") прапора викине помилку TypeError: "replaceAll must be called with a global RegExp".
substr
Рядок, який потрібно замінити на newSubstr. Він вважається звичайним рядком та не інтерпретується як регулярний вираз.
newSubstr (заміна)
Рядок, який замінює підрядок, вказаний параметром regexp або substr. Підтримується ряд спеціальних шаблонів заміни; дивіться нижче розділ "Використання рядка в якості параметра".
function (заміна)
Функція, що буде викликана для створення нового підрядка, який замінить збіги з наданим параметром regexp або substr. Аргументи, що передаються в цю функцію, описані нижче в розділі "Використання функції в якості параметра".

Значення, що повертається

Новий рядок, в якому усі збіги з шаблоном замінені.

Опис

Цей метод не змінює об'єкт String, що його викликав. Він просто повертає новий рядок.

Використання рядка в якості параметра

Рядок заміни може містити наступні спеціальні шаблони заміни:

Шаблон Вставляє
$$ Вставляє "$".
$& Вставляє знайдений підрядок.
$` Вставляє частину рядка, що передує знайденому підрядку.
$' Вставляє частину рядка, що розташована за знайденим підрядком.
$n Де n є додатним цілим числом, меншим за 100, вставляє n-й підрядок збігів у дужках, за умови, що першим аргументом був об'єкт RegExp. Зауважте, що вони індексуються з 1.

Використання функції в якості параметра

Ви можете вказати функцію в якості другого параметра. У цьому випадку функція буде викликана після знайдення збігу. Результат функції (повернене значення) буде використаний в якості рядка заміни. (Заувага: Вищезазначені спеціальні шаблони заміни не застосовуються у цьому випадку.)

Зауважте, що функція буде викликатись багаторазово, для кожного повного збігу, що буде замінений, якщо регулярний вираз у першому параметрі є глобальним.

Функція має наступні аргументи:

Можливе ім'я Надане значення
match Знайдений підрядок. (Відповідає вищенаведеному $&)
p1, p2, ... n-й рядок, знайдений захопленою групою у дужках, за умови, що першим аргументом методу replace() був об'єкт RegExp. (Відповідає вищенаведеним $1, $2 і т.д.) Наприклад, якщо був наданий аргумент /(\a+)(\b+)/, то p1 є збігом з \a+, а p2 - збігом з \b+.
offset Зсув знайденого підрядка всередині рядка, що перевіряється. (Наприклад, якби цілим рядком був 'абвг', а знайденим підрядком 'бв', то цей аргумент дорівнював би 1.)
string Весь рядок, що перевіряється.

(Точна кількість аргументів залежить від того, чи є перший аргумент об'єктом RegExp і, якщо є, то скільки збігів, заключених у дужки, він визначає.)

Приклади

Використання replaceAll

'ааббвв'.replaceAll('б', '.'); 
// 'аа..вв'

Неглобальний регулярний вираз викидає виняток

Якщо використовується регулярний вираз в якості значення пошуку, він повинен бути глобальним. Це не працюватиме:

'ааббвв'.replaceAll(/б/, '.');
TypeError: replaceAll must be called with a global RegExp

Так працюватиме:

'ааббвв'.replaceAll(/б/g, '.');
"аа..вв"

Специфікації

Специфікація
ECMAScript (ECMA-262)
The definition of 'String.prototype.replaceAll' in that specification.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
replaceAllChrome Full support 85Edge Full support 85Firefox Full support 77IE No support NoOpera Full support 71Safari Full support 13.1WebView Android Full support 85Chrome Android Full support 85Firefox Android Full support 79Opera Android Full support 60Safari iOS Full support 13.4Samsung Internet Android No support Nonodejs No support No

Legend

Full support  
Full support
No support  
No support

Див. також