String.prototype.replaceAll()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2020.

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

Исходная строка остаётся без изменений.

Интерактивный пример

Syntax

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

Примечание: Когда вы используете regexp вы должны установить флаг глобального поиска ("g"), иначе вернётся ошибка TypeError: "replaceAll must be called with a global RegExp".

Parameters

regexp (pattern)

Регулярное выражение или буква с глобальным флагом поиска ("g"). Совпадения меняются на newSubstr или значении возвращённое указанной функцией function. A RegExp без глобального флага поиска ("g") вернёт ошибку TypeError: "replaceAll must be called with a global RegExp".

substr

Подстрока, которая заменится newSubstr. Обрабатывается как буквенная строка, не интерпретируется как регулярное выражение.

newSubstr (replacement)

Новая строка, которая заменяет найденные подстроки указанные в regexp или substr параметрах. Поддерживается ряд специальных шаблонов замены; смотрите "Specifying a string as a parameter" блок ниже.

function (replacement)

Функция вызванная при создании новой строки которая используется для замены совпадений указанных в regexp or substr. Аргументы применяемы в этой функции описываются в "Specifying a function as a parameter" блок ниже.

Return value

Новая строка, в которой все совпадения замены на указанную подстроку или специальный шаблон.

Описание

Этот метод не изменяет исходную строку. Он просто возвращает новую.

Указание строки в качестве параметра

Заменённая строка может включатся в следующие специальные шаблоны:

Pattern Inserts
$$ Вставляет "$".
$& Вставлять совпадения.
$` Вставляет часть строки которая находится перед совпадениями (строка соответствующая шаблону).
$' Вставляет часть строки которая следует после совпадения (строка соответствующая шаблону).
$n Где n положительное цело число меньше чем 100, вставляет nth строки указанные в скобках, частичные совпадения, при условии, что первый аргумент был RegExp object. Обратите внимание, что это 1-индексированный.

Указание функции в качестве параметра

Вы можете передать функцию вторым параметром. Этом случае, функция вызывается после нахождения совпадений. Результат функции может быть использована как замещающая строка. (Внимание: Выше упомянутые специальные шаблоны замены в данном случае неприменимы.)

Функция может быть вызвана многократно для каждого заменённого совпадения, если регулярное выражение указано с глобальным флагом("g").

Функция имеет следующие аргументы:

Possible name Supplied value
match Найденная постройка. (Соответствует $& указанному выше)
p1, p2, ... _n_th количество строк найденных групповыми скобками указанные первым параметром в регулярном выражении. (Соответствует $1, $2, см. выше) Для примера, если /(\a+)(\b+)/, то p1 это \a+, а p2 это \b+.
offset Смещение совпадающей подстроки в пределах всей исследуемой строки. (Например, если вся строка была 'abcd', а соответствующая подстрока была 'bc', то этот аргумент будет равен 1.)
string Исследуется вся цепочка.

(Точное количество аргументов зависит от того, является ли первый аргумент регулярным выражением — и, если да, то аргументов будет столько сколько указанно в скобках.)

Examples

Using replaceAll

js
"aabbcc".replaceAll("b", ".");
// 'aa..cc'

Non-global regex throws

Поиск с регулярными выражениями должен быть с ("g"). Это не работает:

js
'aabbcc'.replaceAll(/b/, '.');
TypeError: replaceAll must be called with a global RegExp

Это работает:

js
"aabbcc".replaceAll(/b/g, ".");
("aa..cc");

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

Specification
ECMAScript Language Specification
# sec-string.prototype.replaceall

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также