嘿所有,我正在编写模板引擎代码的字符串替换问题。如果我的代币是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");
答案 0 :(得分:1)
请参阅this SO question有关花括号的内容。也许你选择的浏览器不像chrome那样理解?
答案 1 :(得分:0)
你需要逃避'。'您作为fieldName
参数传入的字符串中的字符。对于您想要按字面解释的任何其他特殊正则表达式字符也是如此。基本上,fieldName
被视为正则表达式模式的一部分。
如果您不希望fieldName
被评估为正则表达式代码,您可能需要考虑使用字符串操作。
编辑:我刚刚在FireFox中运行了您的代码,它完美无缺。你可能还有其他事情要发生。