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

Javascript中字符串replace方法的第二個(gè)參數(shù)探究

 更新時(shí)間:2016年12月05日 10:59:42   作者:Jins  
當(dāng)我們要把一段字符串中的某些指定字符替換掉,第一時(shí)間想到的就是replace方法,他的用法很簡(jiǎn)單,W3school上講的清晰易懂。網(wǎng)上有關(guān)replace的文章也有很多了,那么這篇這里主要聊聊它的第二個(gè)參數(shù),下面來(lái)一起看看,注意閱讀本文需要對(duì)replace方法有一定了解。

前言

replace第一個(gè)參數(shù)一般放置的是正則表達(dá)式,用來(lái)匹配想要替換的文本;第二個(gè)參數(shù)一般我們放入的是字符串,用來(lái)替換掉正則匹配到的文本。

其實(shí)replace遠(yuǎn)比上面說(shuō)的要強(qiáng)大的多,它的內(nèi)部已經(jīng)封裝的很完善了,遠(yuǎn)不是我們想象的那么簡(jiǎn)單,下面我們就來(lái)詳細(xì)聊聊replace的第二個(gè)參數(shù)。

實(shí)例介紹

現(xiàn)在要實(shí)現(xiàn)一個(gè)功能,把HTML中的字符實(shí)體轉(zhuǎn)換成它們所對(duì)應(yīng)的字符,比如:"&lt;"轉(zhuǎn)換成對(duì)對(duì)應(yīng)字符為:"<"。

下面我們來(lái)看看代碼實(shí)現(xiàn):

String.prototype.deentityfy=(function(){
  var entity = {
  lt:'<',
  gt:'>'
  };
  return function(){
  return this.replace(/&([^&;]+);/g,
   function(a,b,c,d){
   console.log('a:'+a+'---b:'+b+'---c:'+c+'---d:'+d);
   var r = entity[b];
   return typeof r ==='string' ? r : a ;
   })
  }
 }())
 document.write('&lt;h1&gt;我是標(biāo)題&lt;/h1&gt;'.deentityfy());

這里得講講字符實(shí)體,以免下面混淆。

字符實(shí)體是不會(huì)當(dāng)作HTML語(yǔ)句來(lái)解析的,比如上面的'&lt;h1&gt;我是標(biāo)題&lt;/h1&gt;'這一段輸出到頁(yè)面上,我們看到的是這樣的:

  

<h1>只是被瀏覽器當(dāng)作字符串輸出,而不是標(biāo)簽輸出,上面這段代碼就是把這些字符實(shí)體轉(zhuǎn)換成對(duì)應(yīng)字符,能夠被瀏覽器所編譯。

我們一步步來(lái)看上面的代碼是怎么實(shí)現(xiàn)的。

首先,給String對(duì)象的原型掛載了一個(gè)deentityfy方法,這個(gè)方法是個(gè)自執(zhí)行函數(shù),使用閉包的形式,函數(shù)內(nèi)的所有內(nèi)容對(duì)外都是不可見的。

函數(shù)內(nèi),我們定義了一個(gè)entity對(duì)象字面量,里面有兩個(gè)屬性,分別對(duì)應(yīng)標(biāo)簽的左右尖括號(hào)。

接下來(lái)return一個(gè)匿名函數(shù),把我們要做的事寫在這個(gè)函數(shù)內(nèi)。

我們調(diào)用replace方法,第一個(gè)參數(shù)放置正則表達(dá)式:

/&([^&;]+);/g

這段正則表達(dá)式的匹配規(guī)則是:以"&"開頭,后面緊跟一個(gè)或一個(gè)以上不是"&"和";"的字符,以";"結(jié)束。后面的g代表全局匹配。(更多有關(guān)正則表達(dá)式的學(xué)習(xí)請(qǐng)點(diǎn)擊這里

這里著重說(shuō)下,正則中的"()"和javascript中運(yùn)算時(shí)使用的"()"概念是不同的,這里的括號(hào)術(shù)語(yǔ)叫做:捕獲括號(hào)。簡(jiǎn)單的說(shuō)就是把括號(hào)內(nèi)匹配到的字符暫時(shí)儲(chǔ)存起來(lái),在待會(huì)的替換環(huán)節(jié)可以取出來(lái)用。

接下來(lái)詳細(xì)講講replace的第二個(gè)參數(shù),也就是本文的重點(diǎn)。

我們一般是放一個(gè)字符串在第二個(gè)參數(shù)中,直接用于替換所匹配到的字符;還有更高階的技巧,使用$字符可以取得捕獲括號(hào)中的內(nèi)容,再進(jìn)行相關(guān)操作。

還有第三種方法, 給第二個(gè)參數(shù)傳入匿名函數(shù),函數(shù)的返回值用做替換的字符。

匿名函數(shù)有4個(gè)參數(shù)可以傳入,當(dāng)然,這些參數(shù)都不是必須要傳的。

  第一個(gè)參數(shù):正則所匹配到的字符;

  第二個(gè)參數(shù):捕獲括號(hào)所捕獲到的字符;

  第三個(gè)參數(shù):正則匹配到的每段字符的第一個(gè)字符的索引;

  第四個(gè)參數(shù):用于匹配的字符串主體;

我把上面代碼的運(yùn)行結(jié)果打印出來(lái)大家應(yīng)該就很清晰了:

  

 

總結(jié)

好了,以上就是這篇文章的全部?jī)?nèi)容了,接觸正則也快三年時(shí)間了,一直不知道正則還有這么強(qiáng)大的功能,當(dāng)然也可能是我孤陋寡聞啦。希望大家永葆一顆學(xué)習(xí)的心,一起進(jìn)步。同時(shí)也希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • 果斷收藏9個(gè)Javascript代碼高亮腳本

    果斷收藏9個(gè)Javascript代碼高亮腳本

    這篇文章主要為大家分享了9個(gè)實(shí)用的Javascript代碼高亮腳本,相信一定對(duì)大家的學(xué)習(xí)有所幫助,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 如何為你的JS項(xiàng)目添加智能提示與類型檢查詳解

    如何為你的JS項(xiàng)目添加智能提示與類型檢查詳解

    這篇文章主要給大家介紹了關(guān)于如何為你的JS項(xiàng)目添加智能提示與類型檢查的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 一文詳解如何有效的處理Promise并發(fā)

    一文詳解如何有效的處理Promise并發(fā)

    這篇文章主要為大家介紹如何有效的處理Promise并發(fā)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 微信小程序?qū)崿F(xiàn)YDUI的ScrollNav組件

    微信小程序?qū)崿F(xiàn)YDUI的ScrollNav組件

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)YDUI的ScrollNav組件,滾動(dòng)導(dǎo)航效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 一文帶你快速理解JavaScript中call()函數(shù)的使用

    一文帶你快速理解JavaScript中call()函數(shù)的使用

    這篇文章主要為大家詳細(xì)介紹了JavaScript中call()函數(shù)的使用的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-03-03
  • jQuery實(shí)現(xiàn)動(dòng)態(tài)生成表格并為行綁定單擊變色動(dòng)作的方法

    jQuery實(shí)現(xiàn)動(dòng)態(tài)生成表格并為行綁定單擊變色動(dòng)作的方法

    這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)生成表格并為行綁定單擊變色動(dòng)作的方法,涉及jQuery頁(yè)面元素遍歷與事件動(dòng)態(tài)響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • 小程序?qū)崿F(xiàn)授權(quán)登陸的解決方案

    小程序?qū)崿F(xiàn)授權(quán)登陸的解決方案

    這篇文章主要介紹了小程序?qū)崿F(xiàn)授權(quán)登陸的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • JavaScript實(shí)現(xiàn)添加及刪除事件的方法小結(jié)

    JavaScript實(shí)現(xiàn)添加及刪除事件的方法小結(jié)

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)添加及刪除事件的方法,實(shí)例總結(jié)了javascript對(duì)事件的添加及刪除的技巧,涉及javascript事件綁定的方法及瀏覽器兼容的相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2015-08-08
  • js、jquery實(shí)現(xiàn)列表模糊搜索功能過(guò)程解析

    js、jquery實(shí)現(xiàn)列表模糊搜索功能過(guò)程解析

    這篇文章主要介紹了js、jquery實(shí)現(xiàn)列表模糊搜索功能過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 微信小程序如何加載數(shù)據(jù)庫(kù)真實(shí)數(shù)據(jù)的實(shí)現(xiàn)

    微信小程序如何加載數(shù)據(jù)庫(kù)真實(shí)數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序如何加載數(shù)據(jù)庫(kù)真實(shí)數(shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論

凤城市| 碌曲县| 新平| 西乌珠穆沁旗| 新巴尔虎右旗| 英吉沙县| 大姚县| 洱源县| 霍林郭勒市| 康乐县| 朝阳区| 东安县| 三都| 深水埗区| 都兰县| 石门县| 南郑县| 定日县| 米泉市| 中江县| 晋中市| 伊春市| 清水河县| 焉耆| 南安市| 澎湖县| 商都县| 广水市| 巩留县| 广宗县| 南靖县| 宁海县| 肃宁县| 平山县| 荥阳市| 三门县| 龙口市| 防城港市| 荆州市| 东莞市| 三门县|