js的replace函數入參為function時的疑問


  近期在寫js導出excel文件時運用到replace方法,此處詳細的記錄下它各個參數所代表的的意義。

定義和用法

replace() 方法用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。

語法

stringObject.replace(regexp/substr,replacement)

返回值

一個新的字符串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之后得到的。返回值

 

   這里的 replacement 可以是函數而不是字符串,就是我們所說的 replace 的入參 function 。

 

舉個栗子

匹配字符串 "abcdefg" :

'abcdefg'.replace(/a(...).(.)/g,function(a,b,c,d,e,f){
    console.log(a,b,c,d,e,f)
})

// 輸出 abcdef bcd f
0 abcdefg undefined "undefinedg"

說明:

/a(...).(.)/g  : 最前面的 "/" 與最后面的 "/" 是分隔符,表示正則表達式的開始與結束
       g : 表示正則表達式使用的global(全局)的狀態.使用 global 標志表明在被查找的字符串中搜索操作將查找所有符合的項,而不僅僅是第一個.這也被稱為全局匹配.
          【相關的標志還有i(ignoreCase,表示忽略大小寫)、m(multiline,表示允許跨行)】
(...) 正則中的小括號,是為了提取匹配的字符串。表達式中有幾個()就有幾個相應的匹配字符串。
. 表示任意字符,括號里的三個...表示匹配三個任意字符。      

 function中參數說明:

  a:第一個參數,為正則所匹配到的內容,此處為 abcdef

    

  b、c : 第二個及以后的為 正則表達式中分組的內容,因為有兩個 () 所以有兩個分組,分別為b,c保存。
  d      : 匹配成功時所在的位置。

  e      : 整個字符串,此處為 abcdefg     

       f       : 然后就沒有了(所以f是 undefined )

 

為啥最后輸出還有個“undefinedg”,沒查明白,歡迎盆友們查到了告訴我一下哈~

 

再粘個栗子體會下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM