Как заменить подстроку регулярного выражения в 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]}`;