Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Метод replace() возвращает новую строку с некоторыми или всеми сопоставлениями с шаблоном, заменёнными на заменитель. Шаблон может быть строкой или регулярным выражением, а заменитель может быть строкой или функцией, вызываемой при каждом сопоставлении.
Объект регулярного выражения RegExp. Сопоставление заменяется возвращаемым значением второго параметра.
substrСтрока, заменяемая на newSubStr. Обратите внимание, будет заменено только первое вхождение искомой строки.
newSubStrСтрока, заменяющая подстроку из первого параметра. Поддерживает несколько специальных шаблонов замены; смотрите ниже раздел Передача строки в качестве второго параметра.
functionФункция, вызываемая для создания новой подстроки (помещаемой вместо подстроки из первого параметра). Аргументы, передаваемые функции, описаны ниже в разделе Передача функции в качестве второго параметра.
flagsОбратите внимание: аргумент flags не работает в ядре v8 (движок JavaScript в Chrome и NodeJs). Строка, задающая комбинацию флагов регулярного выражения. Параметр flags в методе String.prototype.replace() является нестандартным расширением. Вместо использования этого параметра используйте объект RegExp с соответствующими флагами. Значение этого параметра, если он используется, должно быть строкой, состоящей из одного или более следующих символов, следующим образом влияющих на обработку регулярного выражения:
gглобальное сопоставление
iигнорировать регистр
mсопоставление по нескольким строкам
y«липкий» поиск, сопоставление начинается с текущей позиции в строке
Новая строка с некоторыми или всеми сопоставлениями шаблона, заменёнными на заменитель.
Этот метод не изменяет объект String, на котором он вызывается. Он просто возвращает новую строку.
Для выполнения глобального поиска и замены либо включите флаг g в регулярное выражение, либо, если первый параметр является строкой, включите флаг g в параметр flags.
строка замены может включать следующие специальные шаблоны замены:
| $$ | Вставляет символ доллара «$». |
| $& | Вставляет сопоставившуюся подстроку. |
| $` | Вставляет часть строки, предшествующую сопоставившейся подстроке. |
| $' | Вставляет часть строки, следующую за сопоставившейся подстрокой. |
| $n или $nn | Символы n или nn являются десятичными цифрами, вставляет n-ную сопоставившуюся подгруппу из объекта RegExp в первом параметре. |
В качестве второго параметра вы можете передать функцию. В этом случае функция будет выполнена после произошедшего сопоставления. Результат вызова функции (её возвращаемое значение) будет использоваться в качестве строки замены (обратите внимание: описанные выше специальные шаблоны замены в этом случае не применяются). Обратите внимание, что функция будет вызвана несколько раз для каждого полного сопоставления, если регулярное выражение в первом параметре является глобальным.
Функция принимает следующие аргументы:
| match | Сопоставившаяся подстрока (соответствует шаблону замены $&, описанному выше). |
| p1, p2, ... | n-ная сопоставившаяся подгруппа из объекта RegExp в первом параметре метода replace() (соответствует шаблонам замены $1, $2 и так далее, описанным выше). Например, если в качестве шаблона передано регулярное выражение /(\a+)(\b+)/, параметр p1 будет значение сопоставления с подгруппой \a+, а параметр p2 — с подгруппой \b+. |
| offset | Смещение сопоставившейся подстроки внутри всей рассматриваемой строки (например, если вся строка равна 'abcd', а сопоставившаяся подстрока равна 'bc', то этот аргумент будет равен 1). |
| string | Вся рассматриваемая строка. |
Точное число аргументов будет зависеть от того, был ли первым аргументом объект RegExp и, если был, сколько подгрупп в нём определено.
Следующий пример установит переменную newString в значение 'abc - 12345 - #$*%':
В следующем примере регулярное выражение включает флаги для глобального поиска и игнорирования регистра, которые позволяют методу replace() заменить все вхождения слова «яблоки» в строке на слово «апельсины».
В следующем примере в метод replace() передаётся регулярное выражение вместе с флагом игнорирования регистра.
Пример выведет строку 'Twas the night before Christmas...'
Следующий скрипт меняет местами слова в строке. В качестве текста замены он использует шаблоны замены $1 и $2.
Пример выведет строку 'Смит, Джон'.
В этом примере все входящие в строку (латинские) буквы в верхнем регистре преобразуются в нижний регистр, а перед самой буквой вставляется дефис. Здесь важно то, что прежде чем элемент вставится в качестве замены, над ним нужно провести дополнительные преобразования.
Функция замены своим параметром принимает сопоставившийся кусок и перед возвратом использует его для преобразования регистра и соединения с дефисом.
Вызов styleHyphenFormat('borderTop') вернёт строку 'border-top'.
Поскольку мы хотим провести дополнительные преобразования результата сопоставления до того, как будет использована окончательная подстановка, мы должны использовать функцию. Это заставляет нас принудительно вычислить сопоставление перед использование метода toLowerCase(). Если бы мы попытались использовать сопоставление без функции, метод toLowerCase() не сработал бы.
Происходит это потому, что сначала часть '$&'.toLowerCase() вычисляется в строковый литерал (результат по-прежнему равен '$&'), а только потом его символы используются в качестве шаблона.
В следующем примере градусы по Фаренгейту заменяются на эквивалентные градусы по Цельсию. Градусы по Фаренгейту должны быть числом, оканчивающимся на букву F. Функция возвращает количество градусов по Цельсию, оканчивающиеся на букву C. Например, если входное число равняется 212F, функция вернёт 100C. Если число равняется 0F, функция вернёт -17.77777777777778C.
Регулярное выражение test сопоставляется с любым числом, оканчивающимся на букву F. Количество градусов по Фаренгейту передаётся в функцию через её второй параметр, p1. Функция переводит градусы по Фаренгейту, переданные в виде строки в функцию code>f2c(), в градусы по Цельсию. Затем функция f2c() возвращает количество градусов по Цельсию. Эта функция работает примерно так же, как и флаг s///e в Perl.
Следующий пример принимает строку шаблона и преобразует её в массив объектов.
Входные данные:
Строка, состоящая из символов x, - и _
x-x_ x---x---x---x--- x-xxx-xx-x- x_x_x___x___x___Выходные данные:
Массив объектов. Символ 'x' означает состояние 'on', символ '-' (дефис) означает состояние 'off', а символ '_' (нижнее подчёркивание) означает продолжительность состояния 'on'.
Код:
Этот код сгенерирует массив из трёх объектов в описанном формате без использования цикла for.
| ECMAScript® 2027 Language Specification # sec-string.prototype.replace |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 24 июн. 2025 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.