web-dev-qa-db-ja.com

Javascriptで正規表現の部分文字列の一致を置き換えるにはどうすればよいですか?

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

str.replace(regex, 1);

文字列全体をstr1に置き換えます。文字列全体ではなく、一致した部分文字列を置き換えるようにします。これはJavascriptで可能ですか?

101
dave
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);
128
Amarghosh

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");
}

編集:コメントに関する適応

54
user180100

私はあなたが交換したいものの前後に部品を取得し、どちら側に配置します。

好む:

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]}`;
24