Как я могу заменить совпадение подстроки регулярных выражений в Javascript? - PullRequest
99 голосов
/ 30 августа 2010
var str   = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;

str.replace(regex, 1);

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

Ответы [ 4 ]

127 голосов
/ 30 августа 2010
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);
53 голосов
/ 30 августа 2010

с использованием 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");
}

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

23 голосов
/ 30 августа 2010

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

Как:

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]}`;
0 голосов
/ 26 февраля 2019

Я думаю, что самый простой способ достичь вашей цели - это:

var str   = 'asd-0.testing';
var regex = /(asd-)(\d)(\.\w+)/;
var anyNumber = 1;
var res = str.replace(regex, `$1${anyNumber}$3`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...