正则表达式操作 JavaScript 字符串

时间:2021-03-30 07:38:15

标签: regex

如何用该数字加上偏移量替换字符串模式中的所有数字实例。

假设我想用那个数字加上一个偏移量替换所有 HTML 标签

strRegEx = /<ol start="(\d+)">/gi;
strContent = strContent.replace(strRegEx, function() {
                                                  /* return $1 + numOffset; */
                                                   });

1 个答案:

答案 0 :(得分:4)

如果您返回 $1 + numOffset;,您将得到一个连接的字符串。

如果您将 $1 转换为 int,您将只返回组值和 numOffset 的相加,并且不会获得匹配的标签的其余部分,并且不会在替换中返回。


您可以从捕获组2中获取数字并捕获组1中之前的内容,并在replace的函数中添加3个参数,第一个是完整匹配(未使用),和{ {1}}、g1 指的是捕获组。

g2

然后使用例如 parseInt 并添加 numOffset。

(<ol start=")(\d+)(?=">)

或者使用积极的lookbehind和一个没有捕获组的匹配

let strContent = `<ol start="4">`;
const strRegEx = /(<ol start=")(\d+)(?=">)/gi;
const numOffset = 2;
strContent = strContent.replace(strRegEx, function(_, g1, g2) {
  return g1 + (parseInt(g2) + numOffset);
});
console.log(strContent)

(?<=<ol start=")\d+(?=">)

相关问题