首頁  >  文章  >  web前端  >  淺談jQuery中replace()方法_jquery

淺談jQuery中replace()方法_jquery

WBOY
WBOY原創
2016-05-16 15:59:192068瀏覽

今天在讀jquery原始碼時,發現一個以前自己不曾注意過得問題,就是replece()的第二個參數為函數時的問題,以前只是知道replace()的第二個參數可以為函數,但是不知道該怎麼操作,今天看到源碼裡用到了函數作為replace()的第二個參數時,感覺自己讀起來比較吃力,於是準備整理下這個函數...

文法

stringObject.replace( regexp/substr, replacement)

傳回值

傳回一個新的字串,是用replacement取代了regexp的第一次匹配或所欲匹配之後得到的

當replace()方法的參數replacement是函數時,在這種情況下,每個匹配都會呼叫該函數,函數傳回的字串作為替換文字使用。此函數的第一個參數是匹配模式的字串。接下來的參數是與模式中的子表達式相符的字串,可以有0個或多個這樣的參數。接下來的參數是一個整數,宣告了匹配在stringObject中出現的位置。最後一個參數是stringObject本身。這席話是抄至w3cschool,對於現在的我來說以上的那段話我看著不是很明白,也不能用自己的話來簡單描述下,所以只能用實例來說明這一切

複製程式碼 程式碼如下:

var string = "abc123-ii";
string.replace(/(d)-([da-z])/g,function( str1, str2, str3,str4,str5){
         console.log( str1 );// 3-i
         console.log( str2 );// 3(第一個捕獲)
         console.log( str3 );// i(第二個不捕獲組)
         console.log( str4 );// 5(符合string中出現的位置)
         console.log( str5 );// abc123-ii(string本身)
         return "I";
})

以上是今天我在看jquery源碼

複製程式碼 程式碼如下:

camelCase: function( string ) {
        return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
    },
fcamelCase = function( all, letter ) {
        return letter.toUpperCase();
    };

  時所引發的一些不明白,感覺現在自己對這個函數懂了的樣子

然後現在我又想起不知道在以前什麼時候,自已在用repleace()所遇到的對於那時的我來說是怪符號,形如“$1,$2”等等。現在夜來對這問題來做一個解答了

$1,$2, $3.....表示捕獲1,2,3....

複製程式碼 程式碼如下:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$1")); // 用捕獲組1(3)去替換/(d)-([da-z ])/g
 

$&表示與regexp相符的子字串

複製程式碼 程式碼如下:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$&")); // 用與regexp相符的字串(3-i)去替換/(d )-([da-z])/g

$`表示位於符合子字串左側的文字

複製程式碼 程式碼如下:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$`")); // 用符合字串左側的文字(abc12)去取代/(d)- ([da-z])/g

$'表示位於匹配子字串右側的文字

複製程式碼 程式碼如下:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$'")); // 用位於符合字串右側的文字去取代/(d)-([ da-z])/g
  

 $$直接為$符號

複製程式碼 程式碼如下:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$$")); // 用$符號去取代/(d)-([da-z])/ g

以上是自己對於replace()方法使用不明確的地方,本人前端小白,如果有寫的不對的地方,或者有關於此方法更好用法的實例希望各位看官能夠分享...

以上所述就是本文的全部內容了,希望大家能夠喜歡。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn