[英]Can anyone explain this snippet of Javascript code?
讀這個討論 ,我不明白這意味着什么:
$1X$2
只是X ?
關於這個其他代碼:
str = str.replace(/(<script.*?>)(.*)(?=<\/script>)/gi, function(x,y,z)
{return y+z.replace(/a/gi,'Z')})
這是我不明白的:
?=
function(x,y,z)
工作? 即從哪里采取x
, y
和z
? 如果有人能夠以清晰的方式解釋這段代碼,我將非常感激。
用作.replace()
調用的第二個參數的字符串“$ 1X $ 2”包括對正則表達式第一個參數的組的引用。 組 - 括號中正則表達式的一部分 - 收集它們匹配的字符以供日后使用。 子串“$ 1”和“$ 2”表示“組1匹配的任何東西”(或組2)。
當調用.replace()
的第二個參數是一個函數時,JavaScript將匹配信息作為參數傳遞給函數。 第一個參數始終是整個匹配。 后續參數是匹配的組。
從而:
alert("hello world".replace(/(ell)(o w)/, "$2$1");
// alerts "ho wellorld"
這完全是關於捕獲組。 (
和)
捕獲之間的所有內容,以便您以后可以訪問匹配的子字符串。
$1
表示第一個捕獲組, $2
表示第二個(分別是第一對和第二對括號)。 ( $0
表示整場比賽。)
具有回調函數的變量也是相同的,但是這里變量x
, y
和z
用捕獲的組填充(分別對應於$0
, $1
和$2
)。
最后?=
打開一個先行。 這聲稱在匹配中的這個可能性之后是<\\/script>
而沒有實際推進匹配字符串中的正則表達式引擎,也沒有在匹配中包含此部分。
$ 1和$ 2引用捕獲的子表達式(由括號()
分隔()
從前一個參數中的正則表達式引用到.replace()
。
?=是一個積極的前瞻。 http://www.regular-expressions.info/lookaround.html
function(x, y, z)
是一個匿名函數表達式,它與引用$ 1和$ 2類似,但它將它們存儲在變量中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.