【发布时间】:2009-07-22 18:41:25
【问题描述】:
我有一个具有 2 个属性的对象数组:键和值。我有一个文本块,其中包含与对象键相对应的占位符。我想用匹配键的对象中的相应值替换占位符。
我有以下代码:
function LoadReplacementData(replacementData)
{
var text = $("#textblock").html();
$.each(replacementData, function(index, item)
{
var expression = new RegExp("\[sub:" + item.Key + "\]", "g");
text = text.replace(expression, item.Value);
});
$("#textblock").html(text);
}
我在 RegExLib.com 上的 JavaScript 下测试了该模式,它返回了所有以“[sub:KeyText]”形式出现的占位符实例。我还确保键和值正确返回。我还循环了生成的各种表达式,结果模式是准确的。
上面的代码导致text = text... 行出现“内存不足异常”如果我删除分配,什么都不会发生。
知道我在哪里做错了吗?
【问题讨论】:
-
#textblock的内部 html 有多大? -
为什么在这种情况下使用正则表达式而不是简单替换?
-
我认为 replace 只会替换一个实例,而不是全部。
-
如果将每个迭代器替换为普通的 for 循环,还会发生这种情况吗?
-
@tj111 少于 2000 个字符。
标签: javascript regex