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
orsubstr
. Аргументы применяемы в этой функции описываются в "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 |
Browser compatibility
BCD tables only load in the browser