gpt4 book ai didi

javascript - 无法在正则表达式替换中使用 $2 反向引用

转载 作者:行者123 更新时间:2023-11-28 15:06:13 25 4
gpt4 key购买 nike

我正在尝试使用 string.replace 正则表达式制作一个 JavaScript 计算器,但我遇到了一个问题。
例如我的输入是 10k ,我尝试将 k 替换为 000

所以,我制作了这个正则表达式,尝试用字母 k 的索引替换所有出现的情况。在字符串 kmbt 中.

var answer = "10k".replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, "kmbt".indexOf("$2"));

当我console.log这个时,它返回-1,这不是我想要的。

因此将正则表达式稍微更改为:var answer = "10k".replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, "$2");它将正确返回 k

我希望它返回的是 0这是字母 k 在字符串“kmbt”中的位置。有了这个位置,我想继续计算,但这目前与这个问题无关。

问题是显然我无法在正则表达式的“替换”部分使用函数。

有谁知道这个问题的解决方案或者我如何使用“替换”部分中的函数?

答案
您无法直接在正则表达式中进行修改,因此您必须添加一个函数作为参数到“替换”部分,您可以在其中对结果进行修改!
var answer = rsn.replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, function(match, p1, p2) {
// do something with p1 and p2 and return something
return p1 + p2 // for example
});

最佳答案

您可以使用函数来替换字符串,如下所示:

"10k".replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, function(match, p1, p2) {
return p2;
});

p1p2 对应于正常替换中的 "$1""$2"。在返回结果之前,可以在函数中进行任何其他转换或计算。为了在字符串 "kmbt" 中找到 p2 的索引,应该可以这样做:

"10k".replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, function(match, p1, p2) {
return "kmbt".indexOf(p2);
});

您可以阅读有关如何执行此操作的更多信息 here .

关于javascript - 无法在正则表达式替换中使用 $2 反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38806443/

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