了解 JavaScript 字符串的 replace() 方法

找到当前字符串中 第一个 出现的 str1 并将其替换为 str2

返回一个新字符串,而不对原字符串进行修改。

'JavaScript'.replace('Java', 'Type') //'TypeScript'

您可以将正则表达式作为第一个参数传递:

'JavaScript'.replace(/Java/, 'Type') //'TypeScript'

replace() 仅替换 第一个 出现的字符串,除非您使用正则表达式作为搜索字符串,并指定全局 (/g) 选项:

'JavaScript JavaX'.replace(/Java/g, 'Type') //'TypeScript TypeX'

第二个参数可以是一个函数。当找到匹配项时(或者对于使用全局正则表达式 /g 的情况下的 每个 匹配项),将调用此函数,并传入一些参数:

  • 匹配模式的字符串
  • 整数,指定匹配发生的字符串中的位置
  • 字符串本身

函数的返回值将替换字符串的匹配部分。

示例:

'JavaScript'.replace(/Java/, (match, index, originalString) => {
 console.log(match, index, originalString)
 return 'Test'
}) //TestScript

这对于普通字符串也适用,而不仅限于正则表达式:

'JavaScript'.replace('Java', (match, index, originalString) => {
 console.log(match, index, originalString)
 return 'Test'
}) //TestScript

如果您的正则表达式具有捕获组,那些值会作为参数传递给匹配参数之后:

'2015-01-02'.replace(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/, (match, year, month, day, index, originalString) => {
 console.log(match, year, month, day, index, originalString)
 return 'Test'
}) //Test