javascript - 使用 RegEx 替换字符串中的所有变量
问题描述
结合以前的几个答案,我试图组合一个正则表达式,它可以让我替换大括号内所有出现的任何东西
我已经到了这一步,但它似乎不起作用
var str = "The {type} went to the {place}";
var mapObj = {
type: 'Man',
place: "Shop"
};
var re = new RegExp(/(?<=\{)Object.keys(mapObj).join("|")(?=\})/, "gim");
str = str.replace(re, function(matched){
return mapObj[matched.toLowerCase()];
});
console.log(str);
我在上一个答案中添加了 (?<={) 和 (?=}) 以使其仅匹配键在花括号内的匹配项
上一个答案 -用多个其他字符串替换多个字符串
解决方案
使用捕获组,您将获得作为替换回调的第二个参数的值:
var str = "The {type} went to the {place}";
var mapObj = {
type: 'Man',
place: "Shop"
};
str = str.replace(/\{([^{}]+)\}/gim, function(_, c) {
return mapObj[c.toLowerCase()] || `{${c}}`;
});
console.log(str);
推荐阅读
- reactjs - 使用 formik 的自动完成材料 UI 组件正在加载错误和警告
- json - Last.fm api json 没有被快速解码器读取
- javascript - csvtojson如何添加行号
- pdf-generation - 生成 pdf 时不应用 toc 标题的 CSS 宽度
- reactjs - React Hooks:如何根据另一个状态变量更新来更新状态变量
- c++ - 构建 k-mers 集合的重叠图
- ios - 当我们在项目中添加多个storyboard时,什么时候需要指定和声明storyboard变量
- deep-learning - TypeError:预期大小为浮点数,得到
- java - 如何修复Android编程中的内容不允许主目录空
- python - 如何模拟 HTML <-> FLASK 与 cURL 的交互 - POST 请求