gpt4 book ai didi

javascript - 我应该在 string.replace 之前进行 regexp.test 吗?

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

当我想替换字符串的某些部分时,是否应该像这样直接调用replace?

var r1 = /"\+((:?[\w\.]+)(:?(:?\()(:?.*?)(:?\))|$){0,1})\+"/g;
arg = arg.replace(r1, function(outer, inner){
return eval(inner);
});

或者先测试匹配,然后在匹配时替换,就像这样?

var r1 = /"\+((:?[\w\.]+)(:?(:?\()(:?.*?)(:?\))|$){0,1})\+"/g;
if (r1.test(arg)) {
arg = arg.replace(r1, function(outer, inner){
return eval(inner);
});
}

我想这归结为 string.replace(regex, string) 函数的工作原理。即使没有匹配,它会进入我的回调,还是会简单地返回 arg?在那种情况下,我假设直接调用 replace 是避免正则表达式引擎匹配字符串两次的正确方法?

最佳答案

您不必使用测试replace 中的函数仅在匹配发生时执行。

  • 没有匹配项:没有函数(eval)调用
  • 1 场比赛:1 次通话
  • 2 场比赛:2 次通话
  • 等等

此外,您为什么要使用 eval? eval 执行参数,就像它是 JavaScript 表达式一样。由于您知道输入格式,很可能无需 eval 即可实现相同的行为。

关于javascript - 我应该在 string.replace 之前进行 regexp.test 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964043/

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