有人能解释这段Javascript代码吗?

有人能解释这段Javascript代码吗?,javascript,regex,Javascript,Regex,读到这里,我不明白这意味着什么: $1X$2 简单地X 关于其他代码: str = str.replace(/(<script.*?>)(.*)(?=<\/script>)/gi, function(x,y,z) {return y+z.replace(/a/gi,'Z')}) str=str.replace(/()(.*)(?=)/gi,函数(x,y,z) {返回y+z.replace(/a/gi,'z')}) 以下是我不明白的: ?= 函数(x,y,z)

读到这里,我不明白这意味着什么:

 $1X$2
简单地X

关于其他代码:

 str = str.replace(/(<script.*?>)(.*)(?=<\/script>)/gi, function(x,y,z)
 {return y+z.replace(/a/gi,'Z')})
str=str.replace(/()(.*)(?=)/gi,函数(x,y,z)
{返回y+z.replace(/a/gi,'z')})
以下是我不明白的:

  • ?=
  • 函数(x,y,z)
    是如何工作的?i、 e.从何处开始
    x
    y
    z
如果有人能清楚地解释这段代码,我将不胜感激

  • 用作
    .replace()
    调用的第二个参数的字符串“$1X$2”包括正则表达式第一个参数对组的引用。组(括号中的正则表达式部分)收集它们匹配的字符以供以后使用。子字符串“$1”和“$2”表示“组1”(或组2)匹配的内容”

  • 当调用
    .replace()
    的第二个参数是函数时,JavaScript将匹配信息作为参数传递给函数。第一个参数始终是整个匹配项。后面的参数是匹配的组

  • 因此:


    这一切都是关于捕获组的
    捕获之间的所有内容,以便以后可以访问匹配的子字符串

    $1
    指的是第一个捕获的组,
    $2
    指的是第二个组(分别是第一对和第二对括号)。(
    $0
    指的是整场比赛。)

    带有回调函数的变量也有相同的作用,但是这里的变量
    x
    y
    z
    被捕获的组填充(分别对应于
    $0
    $1
    $2


    最后,
    ?=
    打开一个前瞻。它断言匹配中的这个position后面跟着
    ,而没有实际推进匹配字符串中的正则表达式引擎,也没有在匹配中包含这一部分。

    $1和$2引用捕获的子表达式(由括号分隔
    ()
    )从上一个参数中的正则表达式到
    .replace()

    这是一个积极的前瞻


    函数(x,y,z)
    是一个匿名函数表达式,其作用与引用$1和$2类似,但它将它们存储在变量中。

    这里有一些很好的答案。我只是想为javascript正则表达式添加一个额外的资源
    alert("hello world".replace(/(ell)(o w)/, "$2$1");
    // alerts "ho wellorld"