Javascript 替换为 $1 作为 var

标签 javascript regex

我有以下情况: 有一个字符串包含一些变量,例如:

var string = '/page/{id}/{title}';

现在,我希望能够用以下数组中的变量替换 {id} 和 {title}:

var arr = {'id':10, 'title':'test-page'};

我想出了这个小正则表达式:

string.replace ( /{([a-zA-Z0-9]+)}/g , '$1' );

正如预期的那样,它只会返回:

/page/id/title

所以我尝试了这个:

string.replace ( /{([a-zA-Z0-9]+)}/g , arr [ '$1' ] );

但这会返回一个

/page/undefined/undefined

现在,我知道类似这样的事情可以通过循环等方式实现,但是如果能有一个单行代码就更好了。我不太习惯 JS,所以我希望有一些我不知道的功能或选项可以帮助我解决这个问题:)。

最好的问候!

最佳答案

尝试这样的事情:

var arr = {'id':10, 'title':'test-page'};

'/page/{id}/{title}'.replace(/\{([\w\d]+?)\}/g, function(a, b) {
    return arr[b] || '';
});

如果您经常使用这个替换工具,我会创建一个 String 辅助原型(prototype)方法。例如:

String.prototype.template = function(data) {
    return this.replace(/\{([\w\d]+?)\}/g, function(a, b) {
        return data[b] || '';
    });
};

并像这样使用它:

'/page/{id}/{title}'.template(arr);

关于Javascript 替换为 $1 作为 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22287432/

相关文章:

Javascript正则表达式如何实现?

C#获取以特定单词开头的多行字符串行

javascript - 使用空子文档集合保存 Mongoose 文档会导致重复键错误

javascript - 这个功能可以修改一下以提高效率吗?内存和时间

javascript - 除非已经有链接,否则将 URL 转换为链接

JavaScript 正则表达式 : How do I make comma separated numbers optional

javascript - 对数据库中的名称进行排序和分离

javascript - JavaScript 中的双空格

javascript - 下拉值取决于单选按钮的选择

php - 如何在PHP中用加号前缀正数