Inspire - Capo Productions
replace
replace
方法是 JavaScript 字符串对象上的一个方法,常用于替换字符串中的某些部分。结合正则表达式(RegExp)使用时,它可以进行复杂的匹配和替换操作。
语法:
javascript
str.replace(regexp|substr, newSubstr|function)
- regexp:可以是正则表达式(RegExp)对象或字符串。字符串将直接匹配,而正则表达式可以进行复杂的模式匹配。
- newSubstr:要替换成的字符串,可以使用一些特殊的符号(如
$1
,$2
等)来引用匹配组。 - function:可以用一个函数来动态生成替换的内容,函数参数包括匹配到的子串和匹配组。
基本用法
直接替换字符串:
javascriptconst str = 'Hello world' const result = str.replace('world', 'JavaScript') console.log(result) // "Hello JavaScript"
使用正则表达式替换:
javascriptconst str = 'abc123abc456' const result = str.replace(/\d+/g, '数字') console.log(result) // "abc数字abc数字"
/\d+/g
是一个正则表达式,表示匹配一个或多个数字。g
修饰符表示全局匹配,即替换所有匹配的子串。
使用捕获组进行替换
通过使用捕获组(用圆括号括起来的部分)可以在 replace
的替换字符串中使用 $1
, $2
来引用。
javascript
const str = 'I have 2 apples and 3 oranges'
const result = str.replace(/(\d+) (apples|oranges)/g, '$1 个 $2')
console.log(result) // "I have 2 个 apples and 3 个 oranges"
这里,$1
引用第一个捕获组,即数字,$2
引用第二个捕获组,即水果类型。
使用函数动态替换
当需要更灵活的替换时,可以传递一个回调函数给 replace
。该函数会被每次匹配调用,并传递匹配结果。
javascript
const str = 'The price is 15 dollars'
const result = str.replace(/(\d+)/, (match, p1) => {
return `$${p1 * 1.2}` // 价格增加 20%
})
console.log(result) // "The price is $18 dollars"
总结
replace
方法结合正则表达式可以非常强大,用于处理复杂的字符串替换场景。- 可以使用捕获组
$1, $2
等来引用匹配到的子字符串。 - 动态生成替换内容时,可以传递一个回调函数。
你可以根据需要利用正则表达式匹配复杂的模式,实现灵活的文本替换。