--- title: String.prototype.replaceAll() slug: Web/JavaScript/Reference/Global_Objects/String/replaceAll tags: - JavaScript - String - regex - Регулярний вираз - метод - рядок translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll ---
Метод replaceAll() повертає новий рядок, в якому усі збіги з шаблоном замінені вказаним параметром заміни. Шаблон може бути рядком або {{jsxref("RegExp","регулярним виразом")}}, а заміна може бути рядком або функцією, що викликатиметься для кожного збігу.
Початковий рядок лишається незміненим.
const newStr = str.replaceAll(regexp|substr, newSubstr|function)
regexp (шаблон)newSubstr або значення, яке повертає вказана функція function. Регулярний вираз без глобального ("g") прапора викине помилку TypeError: "replaceAll must be called with a global RegExp".substrnewSubstr. Він вважається звичайним рядком та не інтерпретується як регулярний вираз.newSubstr (заміна)regexp або substr. Підтримується ряд спеціальних шаблонів заміни; дивіться нижче розділ "Використання рядка в якості параметра".function (заміна)regexp або substr. Аргументи, що передаються в цю функцію, описані нижче в розділі "Використання функції в якості параметра".Новий рядок, в якому усі збіги з шаблоном замінені.
Цей метод не змінює об'єкт {{jsxref("String")}}, що його викликав. Він просто повертає новий рядок.
Рядок заміни може містити наступні спеціальні шаблони заміни:
| Шаблон | Вставляє |
|---|---|
$$ |
Вставляє "$". |
$& |
Вставляє знайдений підрядок. |
$` |
Вставляє частину рядка, що передує знайденому підрядку. |
$' |
Вставляє частину рядка, що розташована за знайденим підрядком. |
$n |
Де n є додатним цілим числом, меншим за 100, вставляє n-й підрядок збігів у дужках, за умови, що першим аргументом був об'єкт {{jsxref("RegExp")}}. Зауважте, що вони індексуються з 1. |
Ви можете вказати функцію в якості другого параметра. У цьому випадку функція буде викликана після знайдення збігу. Результат функції (повернене значення) буде використаний в якості рядка заміни. (Заувага: Вищезазначені спеціальні шаблони заміни не застосовуються у цьому випадку.)
Зауважте, що функція буде викликатись багаторазово, для кожного повного збігу, що буде замінений, якщо регулярний вираз у першому параметрі є глобальним.
Функція має наступні аргументи:
| Можливе ім'я | Надане значення |
|---|---|
match |
Знайдений підрядок. (Відповідає вищенаведеному $&) |
p1, p2, ... |
n-й рядок, знайдений захопленою групою у дужках, за умови, що першим аргументом методу replace() був об'єкт {{jsxref("RegExp")}}. (Відповідає вищенаведеним $1, $2 і т.д.) Наприклад, якщо був наданий аргумент /(\a+)(\b+)/, то p1 є збігом з \a+, а p2 - збігом з \b+. |
offset |
Зсув знайденого підрядка всередині рядка, що перевіряється. (Наприклад, якби цілим рядком був 'абвг', а знайденим підрядком 'бв', то цей аргумент дорівнював би 1.) |
string |
Весь рядок, що перевіряється. |
(Точна кількість аргументів залежить від того, чи є перший аргумент об'єктом {{jsxref("RegExp")}} і, якщо є, то скільки збігів, заключених у дужки, він визначає.)
'ааббвв'.replaceAll('б', '.');
// 'аа..вв'
Якщо використовується регулярний вираз в якості значення пошуку, він повинен бути глобальним. Це не працюватиме:
'ааббвв'.replaceAll(/б/, '.'); TypeError: replaceAll must be called with a global RegExp
Так працюватиме:
'ааббвв'.replaceAll(/б/g, '.'); "аа..вв"
| Специфікація |
|---|
| {{SpecName('ESDraft', '#sec-string.prototype.replaceall', 'String.prototype.replaceAll')}} |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.builtins.String.replaceAll")}}