gpt4 book ai didi

javascript - 无法使用不同的名称访问正则表达式值

转载 作者:行者123 更新时间:2023-11-28 03:41:24 26 4
gpt4 key购买 nike

我有以下正则表达式,

const regex = new RegExp('<(.*)>' + text + '<(.*)>');
renderer.setProperty(node, 'innerHTML', node.innerHTML.replace(regex, '<$1>' + replaceText + '<$2>'));

而不是使用 '<$1>''<$2>' ,我需要使用'<$open>' & '<$close>'

当我尝试更改时,它没有按预期工作。

如何才能做到?

最佳答案

您似乎以 ECMAScript 2018+ JS 环境为目标。

您可以使用(?<name>pattern)定义named capturing groups在模式和 $<name>替换模式中的命名替换反向引用来引用使用命名组捕获的字符串。

您还可以使用以下方法稍微增强代码

const regex = new RegExp('<(?<open>[^>]+)>' + text.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + '<(?<close>[^>]+)>');
renderer.setProperty(node, 'innerHTML', node.innerHTML.replace(regex, '<$<open>>' + replaceText.replace(/\$/g, '$$$$') + '<$<close>>'));

注释

  • (?<open>[^>]+)将开放标记匹配并捕获到 open命名组和(?<close>[^>]+)将结束标记捕获到 close 中命名组为 [^>]+模式:除 > 之外的 1 个或多个字符
  • text.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')用于转义 text 中的任何特殊字符
  • replaceText.replace(/\$/g, '$$$$')需要正确处理$1就像替换文本中的文字字符串一样。

关于javascript - 无法使用不同的名称访问正则表达式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57279898/

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