String.prototype.replaceAll()
=============================

Метод **`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, вставляет `n`th строки указанные в скобках, частичные совпадения, при условии, что первый аргумент был `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");
```

Specifications
--------------

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

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `String.prototype.replace()`
* `String.prototype.match()`
* `RegExp.prototype.exec()`
* `RegExp.prototype.test()`