在js中,我們經常會需要將某些字符串替換成指定的字符串,這是可以使用replace()方法,它不僅支持使用字符串替換,還能用正則替換
1. 定義:
/**
* @param regexp/substr 被替換的字符串或 RegExp 對象,如果該值是一個字符串,則將它作為要檢索的直接量文本模式,而不是首先被轉換為 RegExp 對象
* @param replacement 替換文本或生成替換文本的函數
* @return 一個新的字符串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之后得到的
**/
stringObject.replace(regexp/substr,replacement)
如果第一個參數是一個正則,就會查找與 regexp 相匹配的子字符串,然后用 replacement 來替換這些子串。如果 regexp 具有全局標志 g,那么 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。如果replacement是一個函數,那么這個函數的返回值就會作為替換文本。如果replacement是一個字符串,那么字符串中的$字符是有特殊含義的:
$1、$2、...、\(99 與 regexp 中的第 1 到第 99 個子表達式相匹配的文本 \)& 與 regexp 相匹配的子串
\(` 位於匹配子串左側的文本 \)' 位於匹配子串右側的文本\[ 直接量符號 \]
2. 例子
- 把'Jack'替換成'World'
var str="Hello Jack!"
str.replace(/Jack/, "World") // Hello World
- 使用正則全局替換,把所有的'COVID-19'替換成'XXX'
var str = "People with COVID-19 have had a wide range of symptoms reported – ranging from mild symptoms to severe illness. Symptoms may appear 2-14 days after exposure to the virus. People with these symptoms may have COVID-19:"
str.replace(/COVID\-19/g, "XXX")
// People with XXX have had a wide range of symptoms reported – ranging from mild symptoms to severe illness. Symptoms may appear 2-14 days after exposure to the virus. People with these symptoms may have XXX:
- 正則查找替換時忽略字母大小寫
var str = "javascript Tutorial";
str.replace(/javascript/i, "JavaScript");
- 把'Jack, hi'替換成‘Hi, Jack’
var str = "Jack, Hi";
str.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
- 把雙引號替換成單引號
var str = '"a", "b"';
str.replace(/"([^"]*)"/g, "'$1'");
- 把字符串中所有單詞的首字母都轉換為大寫
var str = 'aaa bbb ccc';
str.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);
