Regex操作JavaScript字符串



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

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

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

如果要返回$1 + numOffset;,则会得到一个串联字符串。

如果将$1转换为int,则只返回组值和numOffset的相加结果,而不会获得匹配的标记的其余部分,也不会在替换中返回。


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

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

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

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+(?=">)

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

最新更新