aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html
blob: f938fefb64bb8625f214929308671672d2a2e912 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
---
title: String.prototype.replaceAll()
slug: Web/JavaScript/Reference/Global_Objects/String/replaceAll
translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll
---
<div>{{JSRef}}</div>

<p><span class="seoSummary">Метод <strong><code>replaceAll()</code></strong> возвращает новую строку со всеми совпадениями <code>pattern</code> , который меняется на <code>replacement</code></span><code>pattern</code> может быть строкой или регулярным выражением, и <code>replacement</code> может быть строкой или функция возвращающая каждое совпадение.</p>

<p>Исходная строка остается без изменений.</p>

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

<p class="hidden">Исходник этого интерактивного примера находится в GitHub репозитории. Если бы вы хотели внести свой вклад в создание интерактивных примеров для проекта, пожалуйста клонируйте ссылку <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отпрвате нам pull request.</p>

<h2 id="Syntax">Syntax</h2>

<pre class="syntaxbox notranslate">const newStr = <var>str</var>.replaceAll(<var>regexp</var>|<var>substr</var>, <var>newSubstr</var>|<var>function</var>)
</pre>

<div class="blockIndicator note">
<p>Когда вы используете `<var>regexp</var>` вы должны установить флаг глобального поиска ("g"), иначе вернется ошибка <code>TypeError</code>: "replaceAll must be called with a global RegExp".</p>
</div>

<h3 id="Parameters">Parameters</h3>

<dl>
 <dt><code><var>regexp</var></code> (pattern)</dt>
 <dd>Регулярное выражение или буква с глобальным флагом поиска ("g"). Совпадения меняются на <code><var>newSubstr</var></code> или значени возвращенное указанной функцией <code><var>function</var></code>. A RegExp без глобального флага поиска ("g") вернет ошибку <code>TypeError</code>: "replaceAll must be called with a global RegExp".</dd>
 <dt><code><var>substr</var></code></dt>
 <dd>Подстрока, которая заменится <code><var>newSubstr</var></code>. Обрабатывается как буквенная строка, не интерпретируется как регулярное выражение.</dd>
 <dt><code><var>newSubstr</var></code> (replacement)</dt>
 <dd>Новая строка, которая заменяет найденные подстроки указанные в <code><var>regexp</var></code> или <code><var>substr</var></code> парамерах. Поддерживается ряд специальных шаблонов замены; смотрите "<a href="#Specifying_a_string_as_a_parameter">Specifying a string as a parameter</a>" блок ниже.</dd>
 <dt><code><var>function</var></code> (replacement)</dt>
 <dd>Функция вызванная при создании новой строки которая используется для замены совпадений указанных в <code><var>regexp</var></code> or <code><var>substr</var></code>. Аргументы применяемы в этой функции описываются в "<a href="#Specifying_a_function_as_a_parameter">Specifying a function as a parameter</a>" блок ниже.</dd>
</dl>

<h3 id="Return_value">Return value</h3>

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

<h2 id="Описание">Описание</h2>

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

<h3 id="Указание_строки_в_качестве_параметра">Указание строки в качестве параметра</h3>

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

<table class="standard-table">
 <thead>
  <tr>
   <th class="header" scope="col">Pattern</th>
   <th class="header" scope="col">Inserts</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td><code>$$</code></td>
   <td>Вставляет <code>"$"</code>.</td>
  </tr>
  <tr>
   <td><code>$&amp;</code></td>
   <td>Вставлет совпадения.</td>
  </tr>
  <tr>
   <td><code>$`</code></td>
   <td>Вставляет часть строки которая находится перед совпадениями (строка соответствующая шаблону).</td>
  </tr>
  <tr>
   <td><code>$'</code></td>
   <td>Вставляет часть строки которая следует после совпадения (строка соответствующая шаблону).</td>
  </tr>
  <tr>
   <td><code>$<var>n</var></code></td>
   <td>Где <code><var>n</var></code> положительное цело число меньше чем 100, вставляет  <code><var>n</var></code>th строки указанные в скобках, частичные совпадения, при условии, что первый аргумент был {{jsxref("RegExp")}} object. Обратите внимание, что это 1-индексированный.</td>
  </tr>
 </tbody>
</table>

<h3 id="Указание_функции_в_качестве_параметра">Указание функции в качестве параметра</h3>

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

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

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

<table class="standard-table">
 <thead>
  <tr>
   <th class="header" scope="col">Possible name</th>
   <th class="header" scope="col">Supplied value</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td><code>match</code></td>
   <td>Найденная построка. (Соответствуетt <code>$&amp;</code> указанному выше)</td>
  </tr>
  <tr>
   <td><code>p1, p2, ...</code></td>
   <td><var>n</var>th количество строк найденых групповыми скобками указанные первым параметром в регулярном выражении. (Соответствует  <code>$1</code>, <code>$2</code>, см. выше) Для примера, если <code>/(\a+)(\b+)/</code>, то <code>p1</code> это <code>\a+</code>, а <code>p2</code> это<code>\b+</code>.</td>
  </tr>
  <tr>
   <td><code>offset</code></td>
   <td>Смещение совпадающей подстроки в пределах всей исследуемой строки. (Например, если вся строка была 'abcd', а соответствующая подстрока была 'bc', то этот аргумент будет равен 1.)</td>
  </tr>
  <tr>
   <td><code>string</code></td>
   <td>Исследуется вся цепочка.</td>
  </tr>
 </tbody>
</table>

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

<h2 id="Examples">Examples</h2>

<h3 id="Using_replaceAll">Using replaceAll</h3>

<pre class="brush: js notranslate">'aabbcc'.replaceAll('b', '.');
// 'aa..cc'</pre>

<h3 id="Non-global_regex_throws">Non-global regex throws</h3>

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

<pre class="brush: js; example-bad notranslate">'aabbcc'.replaceAll(/b/, '.');
TypeError: replaceAll must be called with a global RegExp
</pre>

<p>Это работает:</p>

<pre class="brush: js; example-good notranslate">'aabbcc'.replaceAll(/b/g, '.');
"aa..cc"
</pre>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Specification</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-string.prototype.replaceall', 'String.prototype.replaceAll')}}</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Browser compatibility</h2>

<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>

<p>{{Compat("javascript.builtins.String.replaceAll")}}</p>

<h2 id="See_also">See also</h2>

<ul>
 <li>{{jsxref("String.prototype.replace", "String.prototype.replace()")}}</li>
 <li>{{jsxref("String.prototype.match", "String.prototype.match()")}}</li>
 <li>{{jsxref("RegExp.prototype.exec", "RegExp.prototype.exec()")}}</li>
 <li>{{jsxref("RegExp.prototype.test", "RegExp.prototype.test()")}}</li>
</ul>