有人能解释这段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')})
以下是我不明白的:
?=
是如何工作的?i、 e.从何处开始函数(x,y,z)
,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"