欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù),下面來一起看看,注意閱讀本文需要對(duì)replace方法有一定了解。

前言

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

其實(shí)replace遠(yuǎn)比上面說的要強(qiáng)大的多,它的內(nèi)部已經(jīng)封裝的很完善了,遠(yuǎn)不是我們想象的那么簡(jiǎn)單,下面我們就來詳細(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)字符為:"<"。

下面我們來看看代碼實(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語句來解析的,比如上面的'&lt;h1&gt;我是標(biāo)題&lt;/h1&gt;'這一段輸出到頁面上,我們看到的是這樣的:

  

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

我們一步步來看上面的代碼是怎么實(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)。

接下來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)擊這里

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

接下來詳細(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é)果打印出來大家應(yīng)該就很清晰了:

  

 

總結(jié)

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

相關(guān)文章

  • JavaScript的常見兼容問題及相關(guān)解決方法(chrome/IE/firefox)

    JavaScript的常見兼容問題及相關(guān)解決方法(chrome/IE/firefox)

    本篇文章只要是對(duì)JavaScript的常見兼容問題及相關(guān)解決方法(chrome/IE/firefox)進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 微信小程序?qū)崿F(xiàn)搜索商品和歷史記錄的功能

    微信小程序?qū)崿F(xiàn)搜索商品和歷史記錄的功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)搜索商品和歷史記錄的功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • thinkjs 文件上傳功能實(shí)例代碼

    thinkjs 文件上傳功能實(shí)例代碼

    ThinkJS 是一款面向未來開發(fā)的 Node.js 框架,整合了大量的項(xiàng)目最佳實(shí)踐,讓企業(yè)級(jí)開發(fā)變得如此簡(jiǎn)單、高效。接下來通過本文給大家分享thinkjs 文件上傳功能,需要的朋友參考下吧
    2017-11-11
  • 微信小程序仿抖音視頻之整屏上下切換功能的實(shí)現(xiàn)代碼

    微信小程序仿抖音視頻之整屏上下切換功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了微信小程序仿抖音視頻之整屏上下切換功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • ES6教程之for循環(huán)和Map,Set用法分析

    ES6教程之for循環(huán)和Map,Set用法分析

    這篇文章主要介紹了ES6教程之for循環(huán)和Map,Set用法,結(jié)合實(shí)例形式分析了ECMAScript6中for循環(huán)和Map,Set基本概念、功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • 小程序圖片長(zhǎng)按識(shí)別功能的實(shí)現(xiàn)方法

    小程序圖片長(zhǎng)按識(shí)別功能的實(shí)現(xiàn)方法

    這篇文章主要介紹了小程序圖片長(zhǎng)按識(shí)別功能的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • 推薦4個(gè)原生javascript常用的函數(shù)

    推薦4個(gè)原生javascript常用的函數(shù)

    這篇文章主要介紹了推薦4個(gè)原生javascript常用的函數(shù),需要的朋友可以參考下
    2015-01-01
  • TypeScript中的函數(shù)

    TypeScript中的函數(shù)

    這篇文章主要介紹了TypeScript中的函數(shù),一般JavaScript中的函數(shù)定義常用的有使用function關(guān)鍵字聲明函數(shù)、使用字面量方式聲明函數(shù)、使用箭頭函數(shù)聲明函數(shù)等幾種函數(shù),下面我們大家就一起進(jìn)入文章了解這些函數(shù)的具體定義吧,需要的朋友可以參考一下
    2021-12-12
  • 基于js中document.cookie全面解析

    基于js中document.cookie全面解析

    下面小編就為大家?guī)硪黄趈s中document.cookie全面解析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 回車直接實(shí)現(xiàn)點(diǎn)擊某按鈕的效果即觸發(fā)單擊事件

    回車直接實(shí)現(xiàn)點(diǎn)擊某按鈕的效果即觸發(fā)單擊事件

    這篇文章主要介紹了回車直接實(shí)現(xiàn)點(diǎn)擊某按鈕的效果即觸發(fā)單擊事件,需要的朋友可以參考下
    2014-02-02

最新評(píng)論