具有深层对象替换问题的Javascript正则表达式

时间:2011-02-03 16:13:17

标签: javascript regex templates

嘿所有,我正在编写模板引擎代码的字符串替换问题。如果我的代币是1级深度一切正常。示例{someProperty}。但是,如果我尝试搜索嵌套对象,它永远不会替换。示例{myobj.deep.test}。我附上了我正在玩的代码。谢谢你的帮助!

function replaceStuff(content, fieldName, fieldValue) { 
    var regexstr = "{" + fieldName + "}";
    console.log("regexstr: ", regexstr);
    //var regex = new RegExp("{myobj\.deep\.test}", "g"); //this works as expected
    var regex = new RegExp(regexstr, "g"); //this doesn't
    return content.replace(regex, fieldValue);
}

replaceStuff("test: {myobj.deep.test}", "myobj.deep.test", "my value");

2 个答案:

答案 0 :(得分:1)

请参阅this SO question有关花括号的内容。也许你选择的浏览器不像chrome那样理解?

答案 1 :(得分:0)

你需要逃避'。'您作为fieldName参数传入的字符串中的字符。对于您想要按字面解释的任何其他特殊正则表达式字符也是如此。基本上,fieldName被视为正则表达式模式的一部分。

如果您不希望fieldName被评估为正则表达式代码,您可能需要考虑使用字符串操作。

编辑:我刚刚在FireFox中运行了您的代码,它完美无缺。你可能还有其他事情要发生。