近期在寫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”,沒查明白,歡迎盆友們查到了告訴我一下哈~
再粘個栗子體會下: