replace()
方法会返回一个新字符串,其中指定的 字符串/正则表达式 已被替换。
示例
const message = "ball bat";
// replace the first b with c
let result = message.replace('b', 'c');
console.log(result);
// Output: call bat
replace() 语法
replace()
的语法是:
str.replace(pattern, replacement)
其中,str 是一个字符串。
replace() 参数
replace()
方法接收:
pattern
- 要被替换的字符串或正则表达式。replacement
- 用于替换pattern
的内容(可以是字符串或函数)。
replace() 返回值
replace()
方法返回一个新字符串,其中指定的模式已被替换。
示例 1:替换第一个匹配项
const text = "Java is awesome. Java is fun."
// passing a string as the first parameter
let pattern = "Java";
let new_text = text.replace(pattern, "JavaScript");
console.log(new_text);
// passing a regex as the first parameter
pattern = /Java/;
new_text = text.replace(pattern, "JavaScript");
console.log(new_text);
输出
JavaScript is awesome. Java is fun. JavaScript is awesome. Java is fun.
在这两个 replace()
方法中,第一个出现的 Java 都被替换成了 JavaScript。
示例 2:替换所有匹配项
要替换所有匹配项,你需要使用带有 g
开关(全局搜索)的正则表达式。例如,使用 /Java/g
而不是 /Java/
。
const text = "Java is awesome. Java is fun."
// notice the g switch in the regex pattern
const pattern = /Java/g;
const new_text = text.replace(pattern, "JavaScript");
console.log(new_text);
输出
JavaScript is awesome. JavaScript is fun.
在这里,replace()
方法将所有出现的 Java
都替换成了 JavaScript
。
不考虑大小写进行替换
replace()
方法是区分大小写的。要执行不区分大小写的替换,你需要使用带有 i
开关(不区分大小写搜索)的正则表达式。
示例 3:不区分大小写的替换
const text = "javaSCRIPT JavaScript"
// the first occurrence of javascript is replaced
let pattern = /javascript/i; // case-insensitive search
let new_text = text.replace(pattern, "JS");
console.log(new_text) // JS JavaScript
// all occurrences of javascript is replaced
pattern = /javascript/gi; // case-insensitive and global search
new_text = text.replace(pattern, "JS");
console.log(new_text) // JS JS
输出
JS JavaScript JS JS
示例 4:将函数作为替换参数
你也可以将一个 函数(而不是字符串)作为 replace()
方法的第二个参数。
const text = "Random digit: 3"
// generate a random digit between 0 and 9
function generateRandomDigit() {
return Math.floor(Math.random() * 10)
}
// regex to match a digit
const pattern = /\d/;
const new_text = text.replace(pattern, generateRandomDigit);
console.log(new_text)
输出
Random digit: 8
当你运行此程序时,可能会看到不同的输出。这是因为 text 中的第一个数字被替换成了 **0** 到 **9** 之间的随机数字。