簡體   English   中英

任何人都可以解釋這段Javascript代碼嗎?

[英]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)工作? 即從哪里采取xyz

如果有人能夠以清晰的方式解釋這段代碼,我將非常感激。

  1. 用作.replace()調用的第二個參數的字符串“$ 1X $ 2”包括對正則表達式第一個參數的組的引用。 組 - 括號中正則表達式的一部分 - 收集它們匹配的字符以供日后使用。 子串“$ 1”和“$ 2”表示“組1匹配的任何東西”(或組2)。

  2. 當調用.replace()的第二個參數是一個函數時,JavaScript將匹配信息作為參數傳遞給函數。 第一個參數始終是整個匹配。 后續參數是匹配的組。

從而:

alert("hello world".replace(/(ell)(o w)/, "$2$1");
// alerts "ho wellorld"

這完全是關於捕獲組。 ()捕獲之間的所有內容,以便您以后可以訪問匹配的子字符串。

$1表示第一個捕獲組, $2表示第二個(分別是第一對和第二對括號)。 $0表示整場比賽。)

具有回調函數的變量也是相同的,但是這里變量xyz用捕獲的組填充(分別對應於$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM