JavaScript替换问题

时间:2009-07-22 18:41:25

标签: javascript regex

我有一组具有2个属性的对象:Key和Value。我有一个带有占位符的文本块,对应于对象Keys。我想用匹配键的对象替换占位符和相应的值。

我有以下代码:

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);
}

我已经在JavaScript下在RegExLib.com上测试了模式,它返回了占位符的所有实例,形式为“[sub:KeyText]”。我还确保键和值正确回归。我还循环了生成的各种表达式,结果模式是准确的。

上面的代码导致text = text...行的“内存不足”如果我删除了作业,则没有任何反应。

有什么想法我做错了吗?

2 个答案:

答案 0 :(得分:3)

使用join和split来防止内存错误怎么样?它将显着节省内存开销,因为它不必使用正则表达式多次解析整个字符串,只需标准字符串方法。

text = text.split("[sub:"+item.Key+"]").join(item.Value)

答案 1 :(得分:0)

我看到的第一件事是你没有逃脱你的反斜杠。

var expression = new RegExp("\\[sub:" + item.Key + "\\]", "g");