js小知識-replace的回呼函數

來源:互聯網
上載者:User

標籤:console   括弧匹配   多次   str   它的   bsp   button   fse   exp   

replace() 方法返回一個由替換值替換一些或所有匹配的模式後的新字串。模式可以是一個字串或者一個Regex, 替換值可以是一個字串或者一個每次匹配都要調用的函數。

注意:原字串不會改變。

文法
str.replace(regexp|substr, newSubStr|function)
參數
regexp (pattern)
一個 RegExp 對象或者其字面量。該正則所匹配的內容會被第二個參數的傳回值替換掉。
substr (pattern)
一個要被  newSubStr  替換的 字串 。其被視為一整個字串,而不是一個Regex。僅僅是第一個匹配會被替換。
newSubStr (replacement)
 用於替換掉第一個參數在原字串中的匹配部分的 字串。該字串中可以插入一些特殊的變數名。參考下面的使用字串作為參數。
function (replacement)
一個用來建立新子字串的函數,該函數的傳回值將替換掉第一個參數匹配到的結果。參考下面的指定一個函數作為參數。
傳回值

一個部分或全部匹配由替代模式所取代的新的字串。

描述

該方法並不改變調用它的字串本身,而只是返回一個新的替換後的字串。

在進行全域的搜尋替換時,Regex需包含 g 標誌。

使用字串作為參數

替換字串可以插入下面的特殊變數名:

變數名 代表的值
$$ 插入一個 "$"。
$& 插入匹配的子串。
$` 插入當前匹配的子串左邊的內容。
$‘ 插入當前匹配的子串右邊的內容。
$n

假如第一個參數是 RegExp對象,並且 n 是個小於100的非負整數,那麼插入第 n 個括弧匹配的字串。

指定一個函數作為參數

你可以指定一個函數作為第二個參數。在這種情況下,當匹配執行後, 該函數就會執行。 函數的傳回值作為替換字串。 (注意:  上面提到的特殊替換參數在這裡不能被使用。) 另外要注意的是, 如果第一個參數是Regex, 並且其為全域匹配模式, 那麼這個方法將被多次調用, 每次匹配都會被調用。

下面是該函數的參數:

變數名 代表的值
match 匹配的子串。(對應於上述的$&。)
p1,p2, ...

假如replace()方法的第一個參數是一個RegExp 對象,則代表第n個括弧匹配的字串。(對應於上述的$1,$2等。)

offset

匹配到的子字串在原字串中的位移量。(比如,如果原字串是“abcd”,匹配到的子字串是“bc”,那麼這個參數將是1)

string 被匹配的原字串。

(精確的參數個數依賴於replace()的第一個參數是否是一個Regex對象, 以及這個Regex中指定了多少個括弧子串。)

下面的例子將會使 newString 變成‘abc - 12345 - #$*%‘:

function replacer(match, p1, p2, p3, offset, string) {  // p1 is nondigits, p2 digits, and p3 non-alphanumerics  return [p1, p2, p3].join(‘ - ‘);}var newString = ‘abc12345#$*%‘.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);console.log(newString);  // abc - 12345 - #$*%

例子2:

function camelize(str) {
  return str.replace(/-+(.)?/g,function(match,chr){
    return chr ? chr.toUpperCase():‘‘
  })
}

camelize(‘background-color‘)
"backgroundColor"

 

js小知識-replace的回呼函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.