【前端學習】字符串replace使用


String對象的replace方法包含兩個參數,第一個參數表示執行匹配的正則表達式,也可以傳遞字符串,第二個參數表示代替匹配的子字符串。

   var b = s.replace("str1","str2");

與search和match方法不同,replace方法不會吧字符串轉換為正則表達式對象,而是以字符串直接量的文本模式盡心匹配。第二個參數可以是替換文本,或者是生成替換文本的函數,將返回值作為替換文本。

replace方法同時執行查找和替換兩個操作。該方法將在字符串中查找與正則表達式相匹配的子字符串,然后調用第二個參數替換這些子字符串。(js中正則表達式的使用方式有兩種,一種是正則表達式對象的方法,一種是字符串對象的方法,前者有exec(str)、test(str)兩個方法,后者有match(regexp)、replace(regexp)、search(regexp)、split(search)四個方法。)如果正則表達式具有全局性質,那么將替換所有匹配的子字符串,否則只替換第一個匹配子字符串。

   var b = '1231231234' ;

     console.log(b.replace('123','321')) // 3211231234

     console.log(b.replace(/123/,'321')) //3211231234  非全局正則

     console.log(b.replace(/123/g,'321')) //3213213214 全局正則

在replace方法中約定了一個特殊的字符“$”,如果加了一個序號,就表示引用正則表達式中匹配的子表達式存儲的字符串。例如:

   var s  = "javascript";

   var b = s.replace(/(java)(script)/,''$2-$1");

     console.log(b) // script-java

  • $1,$2...$99;與正則表達式中的第1~99個子表達式相匹配的文本。
  • $& 與正則表達式相匹配的子字符串。
  • $`位於匹配子字符串左側的文本
  • $'位於匹配子字符串右側的文本
  • $$表示$

當第二個參數使用函數時

       var s = 'script language = "javascript" type = " text / javascript" ';

   var f = function($1) {

         return $1.substring(0,1).toUpperCase() + $1.substring(1)

      };

     console.log(s.replace(/(\b\w+\b)/g,f)); // Script Language = "Javascript" Type = " Text / Javascript" 

    var f2 = function($1,$2,$3) {

         return $2+$3

      };

      console.log(s.replace(/(\b\w+\b)/g,f2)); //script0 language7 = "javascript19" type31 = " text40 / javascript47" 

  • arguments[0] 每次匹配的文本
  • arguments[1]~argument[n-3] 第一個至最后一個匹配子表達式匹配的文本
  • arguments[n-2] 匹配文本的下標
  • arguments[n-1] 執行匹配的字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM