gpt4 book ai didi

Javascript替换方法,替换为 "$1"

转载 作者:IT王子 更新时间:2023-10-29 03:06:58 26 4
gpt4 key购买 nike

我正在阅读 Sitepoints 2007 的书“Simply Javascript”,我遇到了一些我无法理解的代码。

就是下面的代码:

Core.removeClass = function(target, theClass)
{
var pattern = new RegExp("(^| )" + theClass + "( |$)");
target.className = target.className.replace(pattern, "$1");
target.className = target.className.replace(/ $/, "");
};

replace 方法的第一次调用让我很困惑,我不明白“$1”值从哪里来,也不知道它是什么意思。我会认为调用应该用“”替换找到的模式。

最佳答案

每对括号 (...) 其中第一个字符不是 ?* 是一个“捕获组”,它将其结果放入 $1$2$3 等可用于替换模式中。

您可能还会在其他正则表达式引擎(或实际上在有时是原始表达,用于重复)

这些被称为“反向引用”,因为它们通常反向引用表达式中的(较早的)部分。

(*? 表示各种形式的特殊行为,包括非捕获组 (?:...)并简单地分组而不捕获。)


在您的具体示例中, $1 将是组 (^| ) ,它是“字符串开头的位置(零宽度)或单个空格字符”。

因此,通过用它替换整个表达式,您基本上是在删除变量 theClass 和它后面可能的空格。 (结束表达式 ( |$) 是相反的 - 一个空格或字符串结束位置 - 因为它的值没有被使用,所以可以用 (?: | $) 代替。)


希望这可以解释一切 - 如果您需要更多信息,请告诉我。

另外,这里有一些来自网站 regular-expressions.info 的进一步阅读:

关于Javascript替换方法,替换为 "$1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3235763/

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