js replace() 文本替換你所不知的

來源:互聯網
上載者:User

複製代碼 代碼如下:
//把word-word轉化為wordWord
function camelize(s){
return s.replace(/-(\w)/g, function(strMatch, p1){
return p1.toUpperCas();
});
}

這裡應用到了文本替換函數replace,他的一般文法估計大家都已經耳熟能詳了,現在介紹一下當他的第二個參數為函數時的情形。

今天我在群裡發這個函數的時候,有個人反映很快,說上面的那個正則寫錯了“/-(\w)/g”,而後很快又明白了,他的疑惑是這個“()”,其實這個括弧是很必要的:

(x)匹配x,將x儲存在名為$1,$2...$9的變數中,其實就是給其加一個索引,方便後面的調用。如果不加這個括弧就會出錯了:


好的,下面介紹一下函數參數的意義,為什麼這個函數能夠實現指定的功能呢?

ECMAScript v3 規定,replace() 方法的參數 replacement 可以是函數而不是字串。在這種情況下,每個匹配都調用該函數,它返回的字串將作為替換文本使用。該函數的第一個參數是匹配模式的字串。接下來的參數是與模式中的子運算式匹配的字串,可以有 0 個或多個這樣的參數。接下來的參數是一個整數,聲明了匹配在 stringObject 中出現的位置。最後一個參數是 stringObject 本身。

看起來好像有點煩,舉個例子:
複製代碼 代碼如下:
camelize(www-rrr);

也就是調用一下,其實上面的strMatch值為-r,就是與正則匹配的字串(該函數的第一個參數是匹配模式的字串),

上面的p1的值是r,指的是緊接著-後面的r(接下來的參數是與模式中的子運算式匹配的字串),就是我們規定的索引——“(\w)”。

好了,我想之後這個函數要執行什麼應該能看的很清楚了,呵呵,就到這裡了,歡迎補充提議

s.replace(/-([a-z])/ig, function(all, letter) { return letter.toUpperCase(); }); \w還包括了數字和_
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.