String.prototype.replaceAll()

Метод replaceAll() возвращает новую строку со всеми совпадениями pattern , который меняется на replacementpattern может быть строкой или регулярным выражением, и 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 Найденная построка. (Соответствуетt $& указанному выше)
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
ECMAScript (ECMA-262)
Определение 'String.prototype.replaceAll' в этой спецификации.

Browser compatibility

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
replaceAllChrome Полная поддержка 85Edge Полная поддержка 85Firefox Полная поддержка 77IE Нет поддержки НетOpera Полная поддержка 71Safari Полная поддержка 13.1WebView Android Полная поддержка 85Chrome Android Полная поддержка 85Firefox Android Полная поддержка 79Opera Android Полная поддержка 60Safari iOS Полная поддержка 13.4Samsung Internet Android Нет поддержки Нетnodejs Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки

See also