Вы используете отрицательный символьный класс [^w{3}]
, который не соответствует ни одному из w
, {
, }
или 3
.
Вы можете использовать отрицательный lookahead утверждать, что справа не www.и заменить на первую группу захвата, за которой следуют www и точка.
Обратите внимание, что чередование может быть сокращено до https?
, что делает необязательным s использование знака вопроса.
Соответствие
const regex = /(https?:\/\/)(?!www\.)
Заменить на:
$1www.
const regex = /(https?:\/\/)(?!www\.)/g;
const str = `the url is http://google.com http://www.google.com https://google.com https://google.com`;
const subst = `$1www.`;
const result = str.replace(regex, subst);
console.log(result);