Карманы по умолчанию в методе replace в JavaScript

В методе replace, помимо карманов с вашими номерами, всегда доступны также стандартные карманы: $& - всё найденное совпадение, $` и $' - часть строки до и после совпадения. Давайте посмотрим работу с ними на примерах.

Пример

Давайте найдем все числа и обернем их в круглые скобки:

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

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

'(1) (23) (456)'

Пример

Давайте найдем символ @ и заменим его на то, что стоит перед ним, собаку, и то, что стоит после него. Все это запишем в круглых скобках:

let str = '123@456'; let res = str.replace(/@/g, "($`@$')");

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

'123(123@456)456'

Пример

Пусть мы хотим найти доллар и обернуть его в кавычки ``. В этом случае, чтобы $` не было воспринято как команда, доллар нужно удвоить:

let str = 'aaa $ bbb'; let res = str.replace(/\$/g, '`$$`');

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

'aaa `$` bbb'

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

Дана строка:

let str = 'a1b2c3';

Напишите регулярку, которая рядом с каждой цифрой напишет такую же.

Дана строка:

let str = 'sss site.ru zzz site.com kkk';

Замените домены на ссылки вида '<a href="http://site.ru">site.ru</a>'.