gpt4 book ai didi

javascript - 使用正则表达式的输出来提供函数

转载 作者:行者123 更新时间:2023-11-30 19:11:32 25 4
gpt4 key购买 nike

我正在尝试运行一个将替换调用的匹配条件作为参数的函数,但我正在努力解决这个问题。在以下场景中:

x="foo OFFSET_5 bar";
regex=/OFFSET_(-?[0-9]*)\b/g;
function timesThree(n){ return n*3 }

如果我执行一个简单的 x.replace(regex, '$1'),输出如预期的那样是 foo 5 bar。但是,我想将 5 传递给 timesThree,但我做不到,总是得到 NaN 而不是 15

我尝试了 x.replace(regex, timesThree($1)),但无济于事。

我的代码哪里出错了?

提前致谢

最佳答案

您可以在调用周围使用包装函数来完成此操作:

x.replace(regex, (m, c0) => timesThree(c0));

实例:

const x = "foo OFFSET_5 bar";
const regex = /OFFSET_(-?[0-9]*)\b/g;
function timesThree(n){ return n*3 }
console.log(x.replace(regex, (m, c0) => timesThree(c0)));

或者在 ES5 中:

x.replace(regex, function(m, c0){ return timesThree(c0); });

实例:

var x = "foo OFFSET_5 bar";
var regex = /OFFSET_(-?[0-9]*)\b/g;
function timesThree(n){ return n*3 }
console.log(x.replace(regex, function(m, c0){ return timesThree(c0); }));

这是可行的,因为调用该函数时将整体匹配作为第一个参数(m,我们不使用),然后每个捕获组的捕获文本作为后续参数( >c0 在这种情况下)。所以我们将第一个捕获组的文本传递给 timesThree,它通过 * 将字符串隐式转换为数字。结果数字被隐式转换回字符串并插入。

关于javascript - 使用正则表达式的输出来提供函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58410181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com