将字符串<td>{$id}{$name}</td>中的{$id}替换成10,{$name}替换成Tony

将字符串”<tr><td>{$id}</td><td>{$name}</td></tr>”中的{$id}替换成10,{$name}替换成Tony

var str = "<tr><td>{$id}</td><td>{$name}</td></tr>";

console.log(str.replace(/\{\$id\}/,10));

我只会这么写,难道要分两次写吗,怎么一次匹配多个,并替换呢?
请帮忙看看,非常感谢

阅读 3.6k
2 个回答
var map={"id":"10","name":"Tony"};
var input="<tr><td>{$id}</td><td>{$name}</td></tr>";
/**
**根据传入的数据源字段值,去替换字符串
**/
function setData(dataObj,template){
    return template.replace(/{\$([^{}]+)}/ig,function(match,group1){
        return dataObj[group1];
    });
}
setData(map,input);

题主,你可以看下楼下的答案,我也推荐他的答案。


我猜你是这个意思 str.replace(/\{\$id\}(.*)\{\$name\}/, '10$1Tony')

但是我建议你这样写

str = str.replace(/\{\$id\}/g, '10')
str = str.replace(/\{\$name\}/g, 'Tony')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进