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

时间:2014-03-29 17:17:05

标签: 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

现在我的问题:为什么替换标签没有得到测试中的字符串[' some'](未定义)?在第二次尝试获得正常字符串'一些测试'。如何在转换时将其修复为正确转换的标签?

2 个答案:

答案 0 :(得分:1)

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

使用此正则表达式:

/\{([^}]+)\}/g

编辑:您需要String#replace自定义函数处理程序:

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

答案 1 :(得分:1)

检查 demo jsFiddle

的JavaScript

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

在这里,我检查您的 regexp 工作完美 希望这能帮到你!