如何将字符串模式中的所有数字实例替换为该数字加上偏移量。
假设我想用这个数字加上偏移替换所有HTML标签
strRegEx = /<ol start="(d+)">/gi;
strContent = strContent.replace(strRegEx, function() {
/* return $1 + numOffset; */
});
如果要返回$1 + numOffset;
,则会得到一个串联字符串。
如果将$1
转换为int,则只返回组值和numOffset的相加结果,而不会获得匹配的标记的其余部分,也不会在替换中返回。
您可以从捕获组2中获取数字,并捕获组1中之前的内容,在函数中,从replace添加3个参数,第一个是完全匹配(未使用(,g1
、g2
指的是捕获组。
(<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)