作为Web应用程序的一部分,我需要在站点的某些部分中搜索{/d}
或{A-Z}
的实例,并将这些实例替换为放置符号的元素。该符号由给出的类确定。
$(".manaCost").html(function (_, html) {
return html.replace(/\{([\d]|[A-Z])\}/g, "<i class=\"ms ms-cost ms-$1\"></i>")
});
上面的代码仅适用于数字,但是,对于我使用的库的工作方式,它要求$1
在它是一个字母的情况下为小写。值得注意的是,使用我在这里使用的API,我只需要匹配大写字母,但是在我使用它们之前需要将它们转换为小写。
在注入替换标记之前,如何将$1
转换为小写(如果可能,最好在这一行中)?
我尝试过使用文字和其他正则表达式选项但到目前为止没有运气。
答案 0 :(得分:3)
试试这个
$(".manaCost").html(function (_, html) {
return html.replace(/\{([\d]|[A-Z])\}/g, function(fullMatch, group1) {return "<i class='ms ms-cost ms-"+ group1.toLowerCase() +"'></i>";})
});
答案 1 :(得分:2)
String.prototype.replace()方法可以将可选的回调函数作为参数,将用于自定义替换字符串,您可以使用它:
$(".manaCost").html(function (_, html) {
return html.replace(/\{([\d]|[A-Z])\}/g, function(fullMatch, g) {return "<i class='ms ms-cost ms-"+ g.toLowerCase() +"'></i>";})
});