我想在“#”之后增加数字。 我的功能:
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"
希望您的帮助!
答案 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)