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

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

str.replace(regex, 1);

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

вопрос задан 30.08.2010
dave
3029 репутация

3 ответов


  • 116 рейтинг
    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);
    
    ответ дан Amarghosh, с репутацией 47828, 30.08.2010
  • 48 рейтинг

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

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

    ответ дан does_not_exist, с репутацией , 30.08.2010
  • 21 рейтинг

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

    Нравится:

    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]}`;
    
    ответ дан Félix Saparelli, с репутацией 5647, 30.08.2010