最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

也說JavaScript中String類的replace函數(shù)

 更新時間:2011年09月22日 23:57:54   作者:  
最近讀了sharpxiajun的博文《javascript筆記--String類replace函數(shù)的一些事》,感覺寫的很好,很有幫助。
對回調(diào)函數(shù)的參數(shù)說明也很準確:
第一個參數(shù)是匹配到的字符串,最后一個是原字符串,倒數(shù)第二個參數(shù)是匹配到的字符串的在原字符串索引的起始位。
但我很好奇,第二到倒數(shù)第三之間的參數(shù)又是些什么呢?其實,W3school已經(jīng)給出了答案:
復制代碼 代碼如下:

replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。其語法為:
stringObject.replace(regexp/substr,replacement)
replacement 可以是字符串,也可以是函數(shù)。如果它是字符串,那么每個匹配都將由字符串替換。
ECMAScript v3 規(guī)定,replace() 方法的參數(shù) replacement 可以是函數(shù)而不是字符串。在這種情況下,每個匹配都調(diào)用該函
數(shù),它返回的字符串將作為替換文本使用。該函數(shù)的第一個參數(shù)是匹配模式的字符串。接下來的參數(shù)是與模式中的子表達式匹配的
字符串,可以有 0 個或多個這樣的參數(shù)。接下來的參數(shù)是一個整數(shù),聲明了匹配在 stringObject 中出現(xiàn)的位置。最后一個參數(shù)
是 stringObject 本身。

顯然,replacement函數(shù)的第二到倒數(shù)第三之間的參數(shù)是“與模式中的子表達式匹配的字符串”,具體個數(shù)起決于子表達式的個數(shù)。
據(jù)此,我們舉兩個例子來對比說明:
例1:
字符串:"CJ9080"
匹配模式為:/CJ[0-9]{2}/g (無子表達式)
預期結(jié)果:
replacement函數(shù)有3個參數(shù),分別為:
【0】“CJ90”
【1】0
【2】“CJ9080”
測試代碼:
復制代碼 代碼如下:

function replaceStr(s) {
return s.replace(/CJ[0-9]{2}/g,
function(){
for (var i = 0, len = arguments.length; i < len; i++) {
console.info("Argument " + i + ": " + arguments[i]);
}
});
};

運行結(jié)果:


例2:
字符串:"CJ9080"
匹配模式為:/((CJ)([0-9]{2}))/g (有3個子表達式:(CJ[0-9]{2}), (CJ), ([0-9]{2}))
預期結(jié)果:
replacement函數(shù)有6個參數(shù),分別為:
【0】 "CJ90"
【1】 "CJ90"
【2】 "CJ"
【3】 "90"
【4】 0
【5】 "CJ9080"
測試代碼:
復制代碼 代碼如下:

function replaceStr(s) {
return s.replace(/((CJ)([0-9]{2}))/g,
function(){
for (var i = 0, len = arguments.length; i < len; i++) {
console.info("Argument " + i + ": " + arguments[i]);
}
});
};

運行結(jié)果:


顯然,兩個測試例子結(jié)果均與預期一致。說明,當replace函數(shù)的replacement為函數(shù)時,此函數(shù)的參數(shù)各位確如W3school所言:

【0】:匹配模式的字符串;
【1 - (length - 3)】: 與模式中的子表達式匹配的字符串, 0個或多個;
【length - 2】:匹配串在原字符串的索引起始位置,從0開始;
【length - 1】:原字符串。

相關文章

  • JavaScript繼承的三種方法實例

    JavaScript繼承的三種方法實例

    這篇文章主要給大家介紹了關于JavaScript繼承的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • js實現(xiàn)模態(tài)框的拖拽效果

    js實現(xiàn)模態(tài)框的拖拽效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)模態(tài)框的拖拽效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript中數(shù)組去重常用的五種方法詳解

    JavaScript中數(shù)組去重常用的五種方法詳解

    去重是開發(fā)中經(jīng)常會碰到的一個熱點問題,這篇文章主要介紹了JS中實現(xiàn)數(shù)組去重中常用的5個方法,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-06-06
  • JS中事件冒泡和事件捕獲介紹

    JS中事件冒泡和事件捕獲介紹

    這篇文章主要為大家詳細介紹了JS中事件冒泡和事件捕獲的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript實現(xiàn)復制內(nèi)容到粘貼板代碼

    JavaScript實現(xiàn)復制內(nèi)容到粘貼板代碼

    最近做了一個前端項目,其中有需求:通過button直接把input或者textarea里的值復制到粘貼板里。下面小編給大家分享JavaScript實現(xiàn)復制內(nèi)容到粘貼板代碼,需要的朋友參考下
    2016-03-03
  • 分頁欄的web標準實現(xiàn)

    分頁欄的web標準實現(xiàn)

    分頁欄是網(wǎng)頁上最常見不過的一個組件,本博文給出分頁欄的一個web2.0標準示例,并作簡要分析
    2011-11-11
  • JavaScript異步編程常見面試題匯總

    JavaScript異步編程常見面試題匯總

    本文將帶大家學習異步編程這一塊內(nèi)容,鑒于異步編程是js中至關重要的內(nèi)容,所以我們將學習異步編程涉及到的重點和難點,同時這一塊內(nèi)容也是面試??挤秶?,希望對大家有所幫助
    2023-02-02
  • 線路分流自動智能跳轉(zhuǎn)代碼,自動選擇最快鏡像網(wǎng)站(js)

    線路分流自動智能跳轉(zhuǎn)代碼,自動選擇最快鏡像網(wǎng)站(js)

    線路分流自動智能跳轉(zhuǎn)代碼,自動選擇最快鏡像網(wǎng)站,自動選擇電信或網(wǎng)通線路跳轉(zhuǎn)代碼
    2011-10-10
  • 詳談javascript異步編程

    詳談javascript異步編程

    這篇文章主要為大家詳細介紹了javascript異步編程,其實作為一種編程語言Javascript的異步編程是一個非常值得討論的有趣話題,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 純js實現(xiàn)div內(nèi)圖片自適應大小(已測試,兼容火狐)

    純js實現(xiàn)div內(nèi)圖片自適應大小(已測試,兼容火狐)

    純js實現(xiàn)在img圖片大小未知,div大小未知的情況下,讓圖片自適應大小,需要的朋友可以參考下
    2014-06-06

最新評論

乌兰察布市| 平利县| 乐平市| 临泉县| 福州市| 广汉市| 开鲁县| 城口县| 大荔县| 若羌县| 秀山| 通辽市| 昌平区| 永兴县| 若羌县| 西林县| 偃师市| 民县| 城口县| 法库县| 大港区| 潼南县| 大冶市| 鄂尔多斯市| 荥经县| 青龙| 桂平市| 恩施市| 临颍县| 若尔盖县| 哈巴河县| 米易县| 东乡县| 博客| 出国| 上高县| 大荔县| 吉木萨尔县| 湖南省| 信阳市| 河北区|