我正在尝试使用数组中的值替换内容块中的某些自定义变量标记。我目前有一些工作代码可以成功替换看起来像%([variable_name])%的变量但是,我需要它来替换看起来像<%[variable_name]%&gt的变量; 即可。几个小时后我一直在乱用下面的代码,而且我无法绕着正则表达式部分缠绕我的头部,并使用我的新变量格式使其正常工作。
以下是目前适用于%([variable_name])%的代码,如何才能使其适用于<%[variable_name]%> ?
$.each(data, function(key, value){
var our_key = "%(["+key+"])%";
our_key = our_key.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
var regex = new RegExp(our_key, 'g');
new_contents = new_contents.replace(regex,value);
});
编辑:真正的问题是我使用jquery'.html()'属性来抓取我的“new_contents”,它正在替换我的'<'和'>'与'& LT;”和'& GT;'
答案 0 :(得分:1)
尝试将"%(["+key+"])%"
替换为"<%["+key+"]%>"
:
$.each(data, function(key, value){
var our_key = "<%["+key+"]%>";
our_key = our_key.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
var regex = new RegExp(our_key, 'g');
new_contents = new_contents.replace(regex,value);
});
答案 1 :(得分:1)
为什么不反过来呢?
var replacementMap = {
"name": "John Doe"
},
text = "Hello <%[name]%>!";
text = text.replace(/<%\[([^\]]+)\]%>/g, function(match, key) {
return replacementMap[key] || match;
});
console.log(text); // "Hello John Doe!"