在JavaScript中搜索然后替换为不同的步骤

在JavaScript中搜索然后替换为不同的步骤,javascript,replace,Javascript,Replace,我有一些代码在文本中搜索匹配项,然后当它找到匹配项时,对匹配的文本执行一个非平凡的转换,然后我想用这个转换的结果替换它。例如(忽略问题): var text=“foo-bar(10+33)/pi-baz”; var matches=text.match(/[\s\s]+?/g); matches.forEach(元素=>{ var结果=评估值(元素); //现在用result替换元素 }); 我可以用拼凑出一个hack,但必须有一个简洁的方法来完成这项任务。您可以将回调传递给replace()

我有一些代码在文本中搜索匹配项,然后当它找到匹配项时,对匹配的文本执行一个非平凡的转换,然后我想用这个转换的结果替换它。例如(忽略问题):

var text=“foo-bar(10+33)/pi-baz”;
var matches=text.match(/[\s\s]+?/g);
matches.forEach(元素=>{
var结果=评估值(元素);
//现在用result替换元素
});

我可以用拼凑出一个hack,但必须有一个简洁的方法来完成这项任务。

您可以将回调传递给
replace()
,以计算任意替换


有关详细信息,请参阅。

您可以将回调传递到
replace()
以计算任意替换


有关更多详细信息,请参见。

我将使用
reduce()
并减少字符串,而不是使用
forEach()

const evaluateSum=()=>100;
var text=“foo bar(10+33)/pi baz”;
var matches=text.match(/[\s\s]+?/g);
const replacedText=匹配。reduce((结果,元素)=>
结果。替换(元素,评估(元素)),文本);

console.log(replacedText)
我将使用
reduce()
并减少字符串,而不是使用
forEach()

const evaluateSum=()=>100;
var text=“foo bar(10+33)/pi baz”;
var matches=text.match(/[\s\s]+?/g);
const replacedText=匹配。reduce((结果,元素)=>
结果。替换(元素,评估(元素)),文本);
console.log(replacedText)
var text = "foo bar <sum>(10+33)/pi</sum> baz";
var matches = text.match(/<sum>[\s\S]+?<\/sum>/g);
matches.forEach(element => {
    var result = evaluateSum(element);
    // Now somehow replace element with result
});