js replace() 文本替換你所不知的
//把word-word轉(zhuǎn)化為wordWord
function camelize(s){
return s.replace(/-(\w)/g, function(strMatch, p1){
return p1.toUpperCas();
});
}
這里應(yīng)用到了文本替換函數(shù)replace,他的一般語法估計(jì)大家都已經(jīng)耳熟能詳了,現(xiàn)在介紹一下當(dāng)他的第二個(gè)參數(shù)為函數(shù)時(shí)的情形。
今天我在群里發(fā)這個(gè)函數(shù)的時(shí)候,有個(gè)人反映很快,說上面的那個(gè)正則寫錯(cuò)了“/-(\w)/g”,而后很快又明白了,他的疑惑是這個(gè)“()”,其實(shí)這個(gè)括號(hào)是很必要的:
(x)匹配x,將x保存在名為$1,$2...$9的變量中,其實(shí)就是給其加一個(gè)索引,方便后面的調(diào)用。如果不加這個(gè)括號(hào)就會(huì)出錯(cuò)了:
![]()
好的,下面介紹一下函數(shù)參數(shù)的意義,為什么這個(gè)函數(shù)能夠?qū)崿F(xiàn)指定的功能呢?
ECMAScript v3 規(guī)定,replace() 方法的參數(shù) replacement 可以是函數(shù)而不是字符串。在這種情況下,每個(gè)匹配都調(diào)用該函數(shù),它返回的字符串將作為替換文本使用。該函數(shù)的第一個(gè)參數(shù)是匹配模式的字符串。接下來的參數(shù)是與模式中的子表達(dá)式匹配的字符串,可以有 0 個(gè)或多個(gè)這樣的參數(shù)。接下來的參數(shù)是一個(gè)整數(shù),聲明了匹配在 stringObject 中出現(xiàn)的位置。最后一個(gè)參數(shù)是 stringObject 本身。
看起來好像有點(diǎn)煩,舉個(gè)例子:
camelize(www-rrr);
也就是調(diào)用一下,其實(shí)上面的strMatch值為-r,就是與正則匹配的字符串(該函數(shù)的第一個(gè)參數(shù)是匹配模式的字符串),
上面的p1的值是r,指的是緊接著-后面的r(接下來的參數(shù)是與模式中的子表達(dá)式匹配的字符串),就是我們規(guī)定的索引——“(\w)”。
好了,我想之后這個(gè)函數(shù)要執(zhí)行什么應(yīng)該能看的很清楚了,呵呵,就到這里了,歡迎補(bǔ)充提議。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
相關(guān)文章
javascript基本數(shù)據(jù)類型和轉(zhuǎn)換
本文主要介紹了javascript的基本數(shù)據(jù)類型和轉(zhuǎn)換,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-03-03
JavaScript學(xué)習(xí)筆記之取數(shù)組中最大值和最小值
在實(shí)際業(yè)務(wù)中有的時(shí)候要取出數(shù)組中的最大值或最小值。但在數(shù)組中并沒有提供arr.max()和arr.min()這樣的方法。那么是不是可以通過別的方式實(shí)現(xiàn)類似這樣的方法呢?那么今天我們就來整理取出數(shù)組中最大值和最小值的一些方法,需要的朋友一起學(xué)習(xí)吧2016-03-03
javascript中一些數(shù)組常用的API總結(jié)
Js中數(shù)組是一個(gè)重要的數(shù)據(jù)結(jié)構(gòu),它相比于字符串有更多的方法,本篇文章總結(jié)了一些數(shù)組中常用的API,我們把它們分成兩類,一類是會(huì)改變?cè)紨?shù)組,一類是不會(huì)改變?cè)紨?shù)組,感興趣的小伙伴可以學(xué)習(xí)一下2023-09-09
使用layui 渲染table數(shù)據(jù)表格的實(shí)例代碼
今天小編就為大家分享一篇使用layui 渲染table數(shù)據(jù)表格的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
javascript和jquery實(shí)現(xiàn)設(shè)置和移除文本框默認(rèn)值效果代碼
這篇文章主要介紹了javascript和jquery實(shí)現(xiàn)設(shè)置和移除文本框默認(rèn)值效果代碼,本文實(shí)現(xiàn)的是類似html5 placeholder(空白提示)一種效果,需要的朋友可以參考下2015-01-01
JavaScript實(shí)現(xiàn)可終止輪詢請(qǐng)求的方法
輪詢請(qǐng)求就是間隔相同的時(shí)間(如5s)后不斷地向服務(wù)端發(fā)起同一個(gè)接口的請(qǐng)求,當(dāng)然不能無限次去請(qǐng)求,所以輪詢必須要有個(gè)停止輪詢的機(jī)制,今天通過本文給大家介紹JavaScript實(shí)現(xiàn)可終止的輪詢請(qǐng)求,感興趣的朋友一起看看吧2022-06-06
JS+XML 省份和城市之間的聯(lián)動(dòng)實(shí)現(xiàn)代碼
用JS來操作一個(gè)XML文檔來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的表單聯(lián)動(dòng)2009-10-10
淺談redux, koa, express 中間件實(shí)現(xiàn)對(duì)比解析
這篇文章主要介紹了淺談redux, koa, express 中間件實(shí)現(xiàn)對(duì)比解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05

