在应用html.replace()之前将正则表达式结果转换为小写

时间:2017-07-14 07:57:56

标签: javascript jquery html string replace

作为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转换为小写(如果可能,最好在这一行中)?

我尝试过使用文字和其他正则表达式选项但到目前为止没有运气。

2 个答案:

答案 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>";})
});