使用正規表示式替換字串的方法(replace方法)

安全劍客發表於2020-03-17

正規表示式(regular expression)描述了一種字串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。

使用正規表示式替換字串的方法(replace方法)使用正規表示式替換字串的方法(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'
1. 進階用法
var x = "abcda";
//前面引數使用正則,後面使用字串
var y = x.replace(/a/g,'x');//'xbcdx'
1. 複雜用法
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(/\([\s\S]*?)\<\/body\>/g, function(match) {
        return match.replace(/\(.*?)\<\/p\>/g, function(match1) {
            return match1.replace(/a/g, "b")
        })
    });

PS:在進行全域性的搜尋替換時,正規表示式需包含 g 標誌。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2680770/,如需轉載,請註明出處,否則將追究法律責任。

相關文章