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新技能~

浙公网安备 33010602011771号