方法名:str.replace(regexp|substr, newSubStr|function)
做用:返回一個由替換值替換一些或全部匹配的模式後的新字符串
參數詳解:
第一個參數能夠爲正則對象或者字符串字面量
第二個參數能夠爲一個新字符串也能夠爲一個函數,該函數返回替換項
一、第二個參數爲字符串的狀況:
a、常見狀況:
var str='abcdefg';
var reg=/cd/g;
str=str.replace(reg,'');
console.log(str); //abefg
b、使用變量名替換特定部位:(注意要替換特定部位的話,在正則對象中要是用括號包裹)
- 變量爲$$的狀況:插入用$符號替換正則對象中括號包裹的字符所匹配到的內容
var str='abcdefg';
var reg=/(c)d/g;
str=str.replace(reg,'$$d');//這裏括號包裹的c被$替換了,而後再替換整個匹配到的cde
console.log(str);//ab$defg
var str='abcdefg';
var reg=/(c)d(e)/g;
str=str.replace(reg,'$2d$1'); //這裏把匹配的第一個內容合第二個內容替換位置($1匹配第一個位置,$2匹配第二個位置),而後再替換整個匹配到的cde
console.log(str); //abedcfg
var str='abcdefg';
var reg=/(c)d(e)/g;
str=str.replace(reg,'$&d$1$2');//這裏在匹配到的d前面插入整個匹配到的字符cde,在d後面插入匹配到的第一個和第二個括號中的內容,而後再替換整個匹配到的cde
console.log(str);//abcdedcefg
var str='abcdefg';
var reg=/(c)d(e)/g;
str=str.replace(reg,'d$`');//這裏是把匹配到的字符串cde左邊內容ab插入到d後面,而後再替換整個匹配到的cde
console.log(str);//abdabfg
var str='abcdefg';
var reg=/(c)d(e)/g;
str=str.replace(reg,"d$'");//這裏是把匹配到的字符串cde右邊內容fg插入到d後面,而後再替換整個匹配到的cde(注意這裏的單引號要用雙引號包裹)
console.log(str);//abdfgfg
一、第二個參數爲函數的狀況:
替換函數參數詳解
變量名 |
表明的值 |
match |
匹配的子串。(對應於上述的$&。) |
p1,p2, ... |
相似於上述$1,$2…… |
offset |
匹配到的子字符串在原字符串中的偏移量。(好比,若是原字符串是「abcd」,匹配到的子字符串是「bc」,那麼這個參數將是1) |
string |
被匹配的原字符串。 |
var str='xiaoming';
var reg=/(a)o(m)/g;
function replacer(match, p1, p2, offset, string) {
console.log(match, p1, p2, offset, string);//aom a m 2 xiaoming
return [p1, p2].join(' - ');
}
var newString = str.replace(reg, replacer);
console.log(newString); //xia - ming