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

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

Пример

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

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

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

javascript'(1) (23) (456)'

Пример

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

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

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

javascript'123(123@456)456'

Пример

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

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

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

javascript'aaa `$` bbb'

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

Задание 1

Дана строка:

javascriptlet str = 'a1b2c3';

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

Задание 2

Дана строка:

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

Замените домены на ссылки вида:

html<a href="http://site.ru">site.ru</a>