gpt4 book ai didi

javascript - 正则表达式中的计算

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

我有一个疯狂的想法。

我想在正则表达式中进行计算,但不确定是否可行。基本上我有一行说:

Category:

每次你点击一个按钮,它都会说:

Category:
Category 1:
Category 2:

等我现在正在 jQuery 选择器上执行一系列函数:

var newHTML = selector.closest('.row').clone().html().replace(/(Category)(\s)(\d)/g,'$1$2' + (parseInt('$3') + 1)).replace('Category:','Category 2:');

所以它执行第一个替换,如果它是原始的“类别”,它将不匹配并将运行第二个替换。如果确实匹配,我希望它将表达式末尾的数字加一。我想也许我可以 parseInt() 变量并添加一个,但这不起作用,因为 parseInt('$3') 似乎返回 NaN 并且不将变量识别为整数。

我知道有很多其他方法可以做到这一点,但我只是偶然发现了它,难倒了自己,总是想找到一个好问题的答案......

有什么想法吗?谢谢!

最佳答案

与许多其他语言一样,JavaScript 在将参数 传递给函数之前对其求值。因此,在您的情况下,'$1$2' + (parseInt('$3') + 1)) 被评估首先,结果是字符串 '$1$2NaN 'that 被传递给 .replaceparseInt('$3')NaN 因为字符串 '$3' 不能转换为数字:

> parseInt('$3')
NaN

如果你想用匹配项执行任何计算,你必须传递一个函数作为第二个参数:

.replace(/(Category)(\s)(\d)/g, function(match, $1, $2, $3) {
return $1 + $2 + (parseInt($3) + 1));
})

(当然你可以随意命名参数)

您可以在 MDN documentation 中了解有关将回调传递给 .replace 的更多信息.

关于javascript - 正则表达式中的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662714/

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