--- title: String.prototype.replaceAll() slug: Web/JavaScript/Reference/Global_Objects/String/replaceAll translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll ---
{{JSRef}}

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

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

{{EmbedInteractiveExample("pages/js/string-replaceall.html")}}

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 строки указанные в скобках, частичные совпадения, при условии, что первый аргумент был {{jsxref("RegExp")}} object. Обратите внимание, что это 1-индексированный.

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

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

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

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

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

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

Examples

Using replaceAll

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

Non-global regex throws

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

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

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

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

Specifications

Specification
{{SpecName('ESDraft', '#sec-string.prototype.replaceall', 'String.prototype.replaceAll')}}

Browser compatibility

{{Compat("javascript.builtins.String.replaceAll")}}

See also