2021-05-12 14:32:11
利用正規表示式進行字串替換(replace方法)
2020-06-16 16:41:46
語法
str.replace(regexp|substr, newSubStr|function)
引數
-
regexp
(pattern)一個RegExp物件或者其字面量。該正則所匹配的內容會被第二個引數的返回值替換掉。
-
substr
(pattern)一個要被
newSubStr
替換的
{{jsxref("String","字串")}}。其被視為一整個字串,而不是一個正規表示式。僅僅是第一個匹配會被替換。
-
newSubStr
(replacement)用於替換掉第一個引數在原字串中的匹配部分的 {{jsxref("String", "字串")}}
-
function
(replacement)一個用來建立新子字串的函數,該函數的返回值將替換掉第一個引數匹配到的結果。
返回值
一個部分或全部匹配由替代模式所取代的新的字串。
描述
上面語法的含義是說:一共兩個引數,但是兩個引數可以分別傳輸不同的型別的值。
可能你看上面BB半天了也沒看明白,沒關係,我們直接來上程式碼:
用法
-
基本用法
var x = "abcda"; //兩個引數都是字串 var y = x.replace('a','x');//'xbcda'
-
進階用法
var x = "abcda"; //前面引數使用正則,後面使用字串 var y = x.replace(/a/g,'x');//'xbcdx'
-
複雜用法
var x = 'abcda'; //前面引數使用正則,後面使用字串 var y = x.replace(/a/g,function(match){ return match.toUpperCase(); });//'AbcdA'
應用場景
這裡只講複雜用法中的應用場景實際使用,比如有個需求:你需要html檔案中的標籤之間的所有
標籤中的字元a
替換為字元b
。當然如果是正則大神的話就可以跳過這裡了,主要以下方式比較容易理解,更適合正則新手。
解決辦法:
var allData = "<body>"+'rn'+
"<div>aaa</div>"+'rn'+
"<p>aaa</p>"+'rn'+
"</body>";
allData = allData.replace(/<body>([sS]*?)</body>/g, function(match) {
return match.replace(/<p>(.*?)</p>/g, function(match1) {
return match1.replace(/a/g, "b")
})
});
PS:在進行全域性的搜尋替換時,正規表示式需包含 g
標誌。
如果對以上有什麼疑問,可以在評論區發表,方便大家進行探討。
相關文章