在JavaScript中,String.prototype.replace()
方法用于替换字符串中的子字符串,这个方法可以接受两种类型的参数:字符串或正则表达式。
使用字符串作为参数
当第一个参数是字符串时,只会替换第一个匹配的子字符串。
let str = "Hello World"; let newStr = str.replace("World", "JavaScript"); console.log(newStr); // 输出: "Hello JavaScript"
使用正则表达式作为参数
当第一个参数是正则表达式时,可以使用一些特殊的标志和模式来控制替换的行为。
基本用法
let str = "Hello World"; let newStr = str.replace(/World/, "JavaScript"); console.log(newStr); // 输出: "Hello JavaScript"
全局替换
要替换所有匹配的子字符串,可以在正则表达式中使用g
标志(global)。
let str = "Hello World, World!"; let newStr = str.replace(/World/g, "JavaScript"); console.log(newStr); // 输出: "Hello JavaScript, JavaScript!"
忽略大小写
要在替换时忽略大小写,可以在正则表达式中使用i
标志(ignore case)。
let str = "Hello world, WORLD!"; let newStr = str.replace(/world/gi, "JavaScript"); console.log(newStr); // 输出: "Hello JavaScript, JavaScript!"
使用捕获组
正则表达式中的捕获组可以通过$1
,$2
等引用,并在替换字符串中使用。
let str = "John Smith"; let newStr = str.replace(/(\w+) (\w+)/, "$2, $1"); console.log(newStr); // 输出: "Smith, John"
使用回调函数作为第二个参数
如果第二个参数是一个函数,那么每次匹配都会调用这个函数,并且函数的返回值将用作替换字符串。
let str = "The quick brown fox jumps over the lazy dog."; let newStr = str.replace(/\b\w+\b/g, function(match) { return match.toUpperCase(); }); console.log(newStr); // 输出: "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG."
在这个例子中,每个单词都被转换为大写。
String.prototype.replace()
可以接收字符串或正则表达式作为第一个参数。
使用正则表达式时,可以通过添加g
、i
等标志来控制替换行为。
捕获组可以通过$1
,$2
等在替换字符串中引用。
第二个参数可以是字符串或回调函数,如果是回调函数,它会被调用并传入匹配的子字符串。