javascript中包含`{}时的字符串替换`

javascript中包含`{}时的字符串替换`,javascript,Javascript,我使用模板和javascript为json数据生成htmls,这是tempalte: <div id="template"> <div class="iwContainer"> <div class="iwHeaderContainer"> <div class="iw-title-container"> <span cla

我使用模板和javascript为json数据生成htmls,这是tempalte:

    <div id="template">
        <div class="iwContainer">
            <div class="iwHeaderContainer">
                <div class="iw-title-container">
                    <span class="titleText">${name}</span> <a target="_blank" href="detail?fid=${id}" class="titleLink">Detail</a>
                </div>
            </div>
            <div class="iwRichContainer">
                <div class="iw-g-font">Address:${address}</div>
            </div>
            @{setsearchTemplate}
        </div>
    </div>
我称之为:

buildInfoContent({name:'name',id:2,address:'address'});
除了
${id}
之外,所有的palcehodler都被替换了

通过firebug,我发现temlate是这样的:

.........<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=$%7bid%7d" class="titleLink">Detail</a>.......
…..${name}。。。。。。。

因此,
id
没有被替换,如何修复它?

看起来您的浏览器正在对
{}
字符进行编码。您必须在regexp中说明这一点

这是未经测试,但。。。
/\$(\{124;%7b)(\w*)(\}124;%7d)/

这应该可以做到,或者类似的事情……想法是他们的想法。有时浏览器会用特殊字符做一些时髦的事情


编辑:要匹配键(中间匹配的组),请尝试使用传递给回调函数的第三个参数,如本例所示:

它对我来说运行良好::(.我不测试其他机器,它可以工作,但不能在我自己的机器上。那么,有没有想法更改
{}
其他字符
?谢谢,我使用您的regexp,我使用这个函数:
函数(m,key){key=regexp.$2;返回item.hasOwnProperty(key)?item[key]:“”;}
我想知道这是否包含任何潜在问题?您应该能够在当前使用的正则表达式上复制上面的正则表达式,不必更改任何其他代码。不,如果不更改其他代码,
键将是
{
不是属性名。我知道你是对的,你想要第二个匹配的3组。我快疯了,
Regexp.$2
在IE中返回空。
.........<span class="titleText">${name}</span> <a target="_blank" href="detail?fid=$%7bid%7d" class="titleLink">Detail</a>.......