replace()的第二个参数介绍

今天使用了replace(),发现了以前没有注意到的点。先看下官方介绍:

定义和用法

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

语法

stringObject.replace(regexp/substr,replacement)
参数描述
regexp/substr

必需。规定子字符串或要替换的模式的 RegExp 对象。

请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。






以前一般的用法就是string.replace(oldValue, newValue),使用两个字符串做替换功能。直至发现第二个参数可以使用函数。。

 1   let reg = /\{\{(.+?)\}\}/g
 2   let data = {
 3      name: "张三",
 4      age: 19
 5   }
 6   let txt = "{{name}}--{{age}}"
 7   txt.replace(reg, function(_, g) {
 8      let value = data[g.trim()]
 9      return value
10   })

打印txt ,得到结论: 张三--19

 经查阅,发现function支持四个参数:

  • parameter1:匹配后的字符串;
  • parameter2:匹配后的值;
  • parameter3:匹配到的字符串索引值;
  • parameter4:原来的字符串;
 1    let reg = /\{\{(.+?)\}\}/g
 2    let data = {
 3       name: "张三",
 4       age: 19
 5    }
 6    let txt = "{{name}}--{{age}}"
 7    txt.replace(reg, function(a, b, c, d) {
 8       console.log(a)
 9       console.log(b)
10       console.log(c)
11       console.log(d)
12       let value = data[b.trim()]
13       return value
14    })

由此也可以看出,每匹配一次就调用function函数一次。get新技能~

posted @ 2021-01-28 11:28  进击的木头ya  阅读(311)  评论(0)    收藏  举报