在javascript中,有模板语法,如I like ${a} and ${b}.
其中有变量,
let a='apple',b='banana';
1
对于上述字符串,最终会生成,
I like apple and banana.
可以用以下代码模拟实现的原理,
function fn(str, obj) {
//第二个参数支持回调函数,第一位是匹配的子串,第二位是捕获的字符串,因为正则里面只有一个括号,所以不需要p2;
//需要注意的是,虽然用到了全局匹配会匹配两次,但每次匹配成功都会先调用回调函数。
return str.replace(/\$\{(.*?)\}/g, (match, p1) => {
return obj[p1];
})
}
console.log(fn('i like ${b} and ${a}', {
a: 'apple',
b: 'banana'
}))
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
下一期,如何掌握正则表达式