利用正則表達式進行字符串替換(replace方法)


語法

str.replace(regexp|substr, newSubStr|function)

參數

  • regexp (pattern)

    一個RegExp對象或者其字面量。該正則所匹配的內容會被第二個參數的返回值替換掉。

  • substr (pattern)

    一個要被 newSubStr 替換的{{jsxref("String","字符串")}}。其被視為一整個字符串,而不是一個正則表達式。僅僅是第一個匹配會被替換。

  • newSubStr (replacement)

    用於替換掉第一個參數在原字符串中的匹配部分的 {{jsxref("String", "字符串")}}

  • function (replacement)

    一個用來創建新子字符串的函數,該函數的返回值將替換掉第一個參數匹配到的結果。

返回值

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

描述

上面語法的含義是說:一共兩個參數,但是兩個參數可以分別傳輸不同的類型的值。

可能你看上面BB半天了也沒看明白,沒關系,我們直接來上代碼:

用法

  1. 基本用法

    var x = "abcda";
    //兩個參數都是字符串
    var y = x.replace('a','x');//'xbcda'
    
  2. 進階用法

    var x = "abcda";
    //前面參數使用正則,后面使用字符串
    var y = x.replace(/a/g,'x');//'xbcdx'
    
  3. 復雜用法

    var x = 'abcda';
    //前面參數使用正則,后面使用字符串
    var y = x.replace(/a/g,function(match){
      return match.toUpperCase();
    });//'AbcdA'
    

應用場景

這里只講復雜用法中的應用場景實際使用,比如有個需求:你需要html文件中的標簽之間的所有

標簽中的字符a替換為字符b。當然如果是正則大神的話就可以跳過這里了,主要以下方式比較容易理解,更適合正則新手。

解決辦法:


var allData = "<body>"+'\r\n'+
    			"<div>aaa</div>"+'\r\n'+
    			"<p>aaa</p>"+'\r\n'+
    		"</body>";
allData = allData.replace(/\<body\>([\s\S]*?)\<\/body\>/g, function(match) {
        return match.replace(/\<p\>(.*?)\<\/p\>/g, function(match1) {
            return match1.replace(/a/g, "b")
        })
    });

PS:在進行全局的搜索替換時,正則表達式需包含 g 標志。

如果對以上有什么疑問,可以在評論區發表,方便大家進行探討


免責聲明!

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



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