var str = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;
str.replace(regex, 1);
这会用1
替换整个字符串str
。我想替换匹配的子字符串而不是整个字符串。在JavaScript中是否有可能实现?
var str = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;
str.replace(regex, 1);
这会用1
替换整个字符串str
。我想替换匹配的子字符串而不是整个字符串。在JavaScript中是否有可能实现?
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);
使用 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");
}
编辑:根据评论进行调整
我会获取你想要替换的部分之前和之后的内容,并将它们放在两侧。
比如:
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]}`;
var str = 'asd-0.testing';
var regex = /(asd-)(\d)(\.\w+)/;
var anyNumber = 1;
var res = str.replace(regex, `$1${anyNumber}$3`);
'asd-0.testing'
.replace(
/(asd-)\d(\.\w+)/,
(match: string, p1: string, p2: string) => {
return `${p1}1${p2}`;
});
function replacer(match, p1, p2, offset, string) {
console.log('match = ' + match);
console.log('p1 = ' + p1);
console.log('p2 = ' + p2);
console.log('offset = ' + offset);
console.log('string = ' + string);
custom_op = p1 + 1 + p2;
return custom_op;
}
var str = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
matches = str.match(regex)
res = str.replace(regex, replacer);
console.log(res);
// ----OUTPUT----
// match = asd-0.testing
// p1 = asd-
// p2 = .testing
// offset = 0
// string = asd-0.testing
// asd-1.testing
str.replace(regex, "$`1$'")
参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter - SgtPooki