乐趣区

关于javascript:replace之正则和回调函数

一般用法

字符串.replace(‘ 被替换的字符 ’, 替换的字符)
如:

'abcabcabc'.replace('a', 'h') // hbcabcabc

正则表达式替换

'abcabcabc'.replace(/[a]+/g, 'h') // hbchbchbc

回调函数

'abcabcabc'.replace(/[a]+/g, () => {return 'h'}) // hbchbchbc

// 1. /[(a)]+/g () 代表分组捕捉
// 2. 回调参数有 4 个:匹配项,分组捕捉内容,捕捉项地位,原字符串 

简单例子:如果有一个需要要求用户配置一个文字模板,渲染时依据接口返回内容填充数据。

// 后端返回数据
var res = {
    year: '2021',
    month: '03',
    day: '17',
    a: 10,
    b: 9
}
// 文字模板
var str = "${year} 年 ${month} 月 ${day} 日,xxx 零碎处于 ${a > b ?' 失常 ':' 异样 '} 状态"

// 替换 ${...} 等字符
str.replace(/\${([^{}]+)}/g, (item, prop)=>{
    // 针对字母类型的变量替换为实在数据
    // item: 匹配的字符串
    // prop:分组捕捉的须要辨认的属性字符串
    var result = prop.replace(/([a-zA-Z]+)/g, (i, p)=>{
        // 属性替换为理论数据
        return res[p]
    })
    // 有可能是表达式,应用 eval 计算其后果
    return  eval(result)
})
// "2021 年 3 月 17 日,xxx 零碎处于失常状态"
退出移动版