使用JavaScript查找并替换“{any-integer}”的实例

时间:2017-07-13 14:40:21

标签: javascript jquery html

因此,作为网络应用程序的一部分,我试图在我的标记中找到特定的字符集,并在必要时将其替换为其他元素(这会将它们转换为图标而不是纯文本)。

$timeout(function () {
                $('.collapsible').collapsible();


                $(".manaCost:contains('{B}')").html(function (_, html) {
                    return html.replace(/{B}/g, "<i class=\"ms ms-b\"></i>");
                });

                $(".manaCost:contains('{R}')").html(function (_, html) {
                    return html.replace(/{R}/g, "<i class=\"ms ms-r\"></i>");
                });

                $(".manaCost:contains('{W}')").html(function (_, html) {
                    return html.replace(/{W}/g, "<i class=\"ms ms-w\"></i>");
                });

                $(".manaCost:contains('{G}')").html(function (_, html) {
                    return html.replace(/{G}/g, "<i class=\"ms ms-g\"></i>");
                });

                $(".manaCost:contains('{U}')").html(function (_, html) {
                    return html.replace(/{U}/g, "<i class=\"ms ms-u\"></i>");
                });

                $(".manaCost:contains('{ANY-INTEGER BETWEEN BRACES}')").html(function (_, html) {
                    return html.replace(/{ANY-INTEGER BETWEEN BRACES}/g, "<i class=\"ms ms-SAME-INTEGER\"></i>");
                });

}, 0);

所有在其中都有字母的(例如,'{B}'}工作得很好,但是整数一个稍微复杂一些。我需要在括号内找到整数的任何实例,但是然后还需要将相同的整数应用于替换元素中的类。任何人都知道我会怎么做?

1 个答案:

答案 0 :(得分:0)

/\{(\d)\}/g之类的内容会捕获整数,因此您可以使用$1等获取

&#13;
&#13;
$("#test").html(function (_, html) {
	return html.replace(/\{(\d)\}/g, "<i class=\"s$1\">$1</i>");
});
&#13;
.s2 {color: red}
.s3 {color: blue}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">
   test {2} {3} something
</div>
&#13;
&#13;
&#13;

正如Rory所提到的,你应该考虑立即进行所有替换,并且确实没有必要检查每个元素是否包含你正在寻找的东西,只是做

$(".manaCost").html(function(_, html) {
  return html.replace(/\{B\}/g, "<i class=\"ms ms-b\"></i>")
             .replace(/\{R\}/g, "<i class=\"ms ms-r\"></i>")
             .replace(/\{W\}/g, "<i class=\"ms ms-w\"></i>")
             .... etc
});