Карманы в методе replace в регулярках JavaScript

При работе с методом replace, если мы что-то положим в карман в регулярке, то в строке замены мы можем вставить содержимое этого кармана написав знак доллара $ и номер кармана. Например. $1 - первый карман, $2 - второй карман и так далее.

Зачем это нужно и как этим пользоваться давайте посмотрим на примерах.

Пример

Давайте найдем все числа и вместо них вставим эти же числа, но в круглых скобках. Для этого все найденные числа мы будем заменять на них самих же, но в скобках:

let str = '1 23 456 xax'; let res = str.replace(/(\d+)/g, '($1)');

В результате в res запишется следующее:

'(1) (23) (456) xax'

Пример

Давайте найдем все строки, представляющие собой числа с иксами вокруг и заменим эти числа на них же, но с '!' знаками вокруг:

let str = 'x1x x23x x456x xax'; let res = str.replace(/x(\d+)x/g, '!$1!');

В результате в res запишется следующее:

'!1! !23! !456! xax'

Пример

Давайте решим следующую задачу: даны строки вида 'aaa@bbb' - буквы, потом собака, потом буквы. Нужно поменять местами буквы до @ и после.

let str = 'aaa@bbb ссс@ddd'; let res = str.replace(/([a-z]+)@([a-z]+)/g, '$2@$1');

В результате в res запишется следующее:

'bbb@aaa ddd@ссс'

Практические задачи

Дана строка:

let str = '12 34 56 78';

Поменяйте местами цифры во всех двухзначных числах.

Дана строка с датой:

let str = '31.12.2025';

Преобразуйте эту дату в '2025.12.31'.