String.prototype.replaceAll()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2020.
Метод 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
"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");
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.replaceall |
Совместимость с браузерами
BCD tables only load in the browser