JavaScript метод replace()

JavaScript String

Определение и применение

JavaScript метод replace() выполняет внутри строки поиск с использованием регулярного выражения (объект RegExp), или строкового значения и возвращает новую строку, в которой будут заменены найденные значения.


Обращаю Ваше внимание, что eсли для регулярного выражения используется глобальный флаг g (global match flag), то метод replace() заменяет все найденные совпадения строкой замены. Если флаг g не используется, то метод replace() осуществляет замену только первого совпадения.


Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
replace()ДаДаДаДаДаДа

JavaScript синтаксис:

string.replace(searchValue, newValue);

searchvalue - RegExp || String
newValue - String || Function

Версия JavaScript

ECMAScript 3. JavaScript 1.2.

Значения параметров

ПараметрОписание
searchvalueОбъект регулярного выражения или строковое значение. Если аргумент является строкой, а не регулярным выражением, то метод replace() выполняет буквальный поиск строки, а не преобразует его в регулярное выражение с помощью вызова конструктора new RegExp(regexp).
newValue

Строка, определяющая текст для замены, или функция, которая вызывается для генерации текста замены. Строка замены может включать следующие специальные шаблоны замены:

СимволыЗамена
$1, $2, …, $99Текст, соответствующий подвыражению с номером от 1 до 99 внутри регулярного выражения regexp (объекта RegExp).
$&Вставляет сопоставившуюся подстроку.
$`Вставляет часть строки, предшествующую сопоставившейся подстроке (текст слева от найденной подстроки).
$'Вставляет часть строки, следующую за сопоставившейся подстрокой (текст справа от найденной подстроки).
$$Осуществляет вставку символа доллара.

Обратите внимание на то, что если аргумент является функцией, то она будет вызываться для каждого найденного соответствия, а возвращаемая ею строка будет использоваться в качестве текста для замены.
Функция принимает следующие аргументы:

  • Первый аргумент, передаваемый функции это строка, которая соответствует шаблону (cоответствует шаблону замены $&).
  • Следующие за ним аргументы это строки, соответствующие любым подвыражениям внутри шаблона (подобных аргументов может быть от ноля и более).
  • Следующий аргумент представляет из себя целое число, указывающее позицию внутри строки, в которой было найдено соответствие.
  • Последний аргумент функции замены содержит копию строки по которой происходит замена (содержит ссылку на саму строку).

Важный момент заключается в том, что точное число аргументов зависит от того, был ли первый аргумент объектом RegExp, если да, то сколько подгрупп в нём определено.

Пример использования

Использование флагов g и i с методом replace()

const str = 'Ты кто такой? Что ты делаешь?'; // инициализируем строковое значение
const newstr = str.replace(/ты/gi, 'вы');
console.log(newstr); // "вы кто такой? Что вы делаешь?"

Перестановка слов местами

const str = 'Boris Britva'; // инициализируем строковое значение
const newstr = str.replace(/(\w+)\s(\w+)/, '$2 $1');
console.log(newstr); // Britva Boris

Перевод первых букв всех слов в верхний регистр с помощью функции замены

const str = 'андрей, артем, иван, вазген'; // инициализируем строковое значение

const func = (word) =>  word.substring(0,1).toUpperCase() + word.substring(1); // инициализируем функцию замены

const newstr = str.replace(/([^\s]+)/g, func);

console.log(newstr); // "Андрей, Артем, Иван, Вазген"

Определенный символ в качестве разделителя числа

const num = 123456789; // инициализируем числовое значение
const re = /\B(?=(\d{3})+(?!\d))/g; // инициализируем регулярное выражение

const newstr = num.toString().replace(re, ','); // запятые в качестве разделителя числа
const newstr2 = num.toString().replace(re, ' '); // пробелы в качестве разделителя числа

console.log(newstr); // "123,456,789"
console.log(newstr2); // "123 456 789"
JavaScript String
×

Кажется, вы используете блокировщик рекламы :(

Этот ресурс не является коммерческим проектом и развивается на энтузиазме автора сайта, который посвящает все свое свободное время этому проекту.

Добавьте, пожалуйста, basicweb.ru в исключения блокировщика рекламы, этим вы поможете развитию проекта.