如何解析正则表达式中捕获的块

时间:2019-05-31 07:43:17

标签: javascript regex

我想在“#”之后增加数字。 我的功能:

let test = `#2*345+#1-#2-3+#1`;
console.log(test.replace(/#([0-9])/g, `#${'$1' + 1}`)); //#21*345+#11-#21-3
console.log(test.replace(/#([0-9])/g, `#${parseInt('$1') + 1}`)); //#NaN*345+#NaN-#NaN-3

//but my expect result is "#3*345+#2-#3-3"

希望您的帮助!

2 个答案:

答案 0 :(得分:2)

在对模板文字求值之后, 发生组替换。请使用替代功能:

let test = `#2*345+#1-#2-3+#1`;
console.log(test.replace(/#([0-9])/g, (_, num) => `#${parseInt(num) + 1}`));

答案 1 :(得分:2)

您可以使用replace的回调函数

let test = `#2*345+#1-#2-3+#1`;

let op = test.replace(/#([0-9])/g, (match,g1)=>`#${parseInt(g1) + 1}`);

console.log(op)