Javascript将$1替换为var
Javascript replace with $1 as var
我有以下情况:有一个特定的字符串,其中包含一些变量,例如:
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
助手原型方法。例如:
String.prototype.template = function(data) {
return this.replace(/'{(['w'd]+?)'}/g, function(a, b) {
return data[b] || '';
});
};
,并像这样使用:
'/page/{id}/{title}'.template(arr);
根据MDN文章,
因为我们想更进一步在最后的替换之前变换匹配的结果制作时,我们必须使用函数。这将强制对匹配进行评估在
toLowerCase()
法之前。如果我们试着用如果比赛没有一个功能,toLowerCase()
将没有作用。
(在上面的文本中,将toLowerCase()
替换为"访问对象中的属性")
然后,你可以使用
function replacer(match, p1, p2, p3/*, ...*/, offset, string){
return arr[p1];
}
var arr = {'id':10, 'title':'test-page'};
'/page/{id}/{title}'.replace(/'{(['w'd]+?)'}/g, replacer);
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 控制台返回var不是't定义,但它是
- 将 var 替换为一些新的 var jquery
- 如何在 JavaScript 中将数组中的 [ ] 替换为 var 结果
- 替换“;var url”;使用文本框输入
- var x=y||false的最佳替换
- 将 var^power 替换为 pow(var,power)
- js使用对象文字替换var
- 将jquery函数替换为var
- 替换var中的value
- 可以在JavaScript中替换var
- 这个javascript正则表达式做什么?: var match = self.location.href.替换(美元/
- 有没有理由不把JavaScript中的var替换成let呢?
- JS在var中替换html中的id
- 替换var中的HTML类
- 在HTML源代码中找到一个值,并将var的值替换为另一个
- 如何使用Javascript替换来改变var,这是一个数字
- jQuery在html var中替换全局整数
- Javascript将$1替换为var