如何在Javascript中将正则表达式替换为数组元素

如何在Javascript中将正则表达式替换为数组元素,javascript,regex,string,Javascript,Regex,String,我遇到了以下问题。我想替换数组字符串对应元素名称上的标记。也许有点笨拙地解释一下,所以我将向您展示代码: var test = []; test['some'] = 'Some test'; var content = '{some}'; document.write(content.replace(/{([^}]+)}/g, test[RegExp.$1])); // It doesn't work document.write(test[RegExp.$1]); // It work 现在

我遇到了以下问题。我想替换数组字符串对应元素名称上的标记。也许有点笨拙地解释一下,所以我将向您展示代码:

var test = [];
test['some'] = 'Some test';
var content = '{some}';
document.write(content.replace(/{([^}]+)}/g, test[RegExp.$1])); // It doesn't work
document.write(test[RegExp.$1]); // It work

现在我的问题是:为什么replace标记没有获取测试['some'](get undefined)中保存的字符串?在第二次尝试获取正常字符串“Some test”期间。如何在转换时将其修复为正确转换的标记?

您需要转义
{和}
,因为它们都是特殊的正则表达式符号:

使用此正则表达式:

/\{([^}]+)\}/g
编辑:您需要使用自定义函数处理程序替换
字符串:

repl = content.replace(/\{([^}]+)\}/g, function($0, $1) {return test[$1];});
选中此项

JavaScript 结果 在这里,我检查您的工作是否完美
希望这对你有帮助

谢谢你的回复,但不幸的是它仍然不起作用。我尝试了document.write(content.replace(/\{([^}]+)\}/g,test[RegExp.$1]);和document.write(content.replace(/\{([^}]+)\}/g,test[“$1]”);
var test = [];
test['some'] = 'Some test';
var content = '{some}';
document.write(content.replace(new RegExp('/{([^}]+)}/','g'), test['some'])); 
document.write(test['some']);
{some}Some test