Как заменить подстроку регулярного выражения в Javascript?

var str   = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;

str.replace(regex, 1);

Это заменяет всю строку str на 1. Я хочу, чтобы он заменил подобранную подстроку вместо целой строки. Возможно ли это в Javascript?

Ответ 1

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
str = str.replace(regex, "$11$2");
console.log(str);

Или, если вы уверены, что в строке не будет никаких других цифр:

var str   = 'asd-0.testing';
var regex = /\d/;
str = str.replace(regex, "1");
console.log(str);

Ответ 2

с помощью str.replace(regex, $1);:

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

if (str.match(regex)) {
    str = str.replace(regex, "$1" + "1" + "$2");
}

Изменить: адаптация относительно комментария

Ответ 3

Я бы получил часть до и после того, что вы хотите заменить, и поместите их в обе стороны.

Как

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

var matches = str.match(regex);

var result = matches[1] + "1" + matches[2];

// With ES6:
var result = `${matches[1]}1${matches[2]}`;