Метод replaceAll()
повертає новий рядок, в якому усі збіги з шаблоном замінені вказаним параметром заміни. Шаблон може бути рядком або регулярним виразом
, а заміна може бути рядком або функцією, що викликатиметься для кожного збігу.
Початковий рядок лишається незміненим.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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. |
Сумісність з веб-переглядачами
BCD tables only load in the browser
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.