JavaScript

用正则表达式实现模板字符串匹配

replace立大功

Wenyuan
2021-01-04
1 min

在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

下一期,如何掌握正则表达式