寻找一行JavaScript正则表达式替换

寻找一行JavaScript正则表达式替换,javascript,regex,replace,Javascript,Regex,Replace,我正在一个“命令”中搜索JavaScript正则表达式替换 它应该将四个括号内的星号(每侧两个)替换为HTML字符代码★(★) 在span class=“stars”范围内。至少有1个星号,最多有5个星号 替换应用于较大的文本,因此多个替换应该起作用 例如: {{*}} {{**}} {{***}} {{****}} {{*****}} 应替换为: <span class="stars">&#9733;</span> <span class="s

我正在一个“命令”中搜索JavaScript正则表达式替换

它应该将四个括号内的星号(每侧两个)替换为HTML字符代码
(★) 在span class=“stars”范围内。至少有1个星号,最多有5个星号

替换应用于较大的文本,因此多个替换应该起作用

例如:

{{*}}
{{**}}
{{***}}
{{****}}
{{*****}}
应替换为:

<span class="stars">&#9733;</span>
<span class="stars">&#9733;&#9733;</span>
<span class="stars">&#9733;&#9733;&#9733;</span>
<span class="stars">&#9733;&#9733;&#9733;&#9733;</span>
<span class="stars">&#9733;&#9733;&#9733;&#9733;&#9733;</span>
和#9733;
★★
★★★
★★★★
★★★★★

实际上不是一行,但这是可行的

var t = document.getElementById("container").innerHTML;
t = t.replace(/{{(\*{1,5})}}/g,function(m, g) {
    return "<span class='star'>"+new Array(g.length+1).join("&#9733;")+"</span>";
});
document.getElementById("container").innerHTML = t;
var t=document.getElementById(“容器”).innerHTML;
t=t.replace(/{(\*{1,5}}}}/g,函数(m,g){
返回“+新数组(g.length+1)。联接(★;”)+”;
});
document.getElementById(“容器”).innerHTML=t;

实际上不是一行,但这是可行的

var t = document.getElementById("container").innerHTML;
t = t.replace(/{{(\*{1,5})}}/g,function(m, g) {
    return "<span class='star'>"+new Array(g.length+1).join("&#9733;")+"</span>";
});
document.getElementById("container").innerHTML = t;
var t=document.getElementById(“容器”).innerHTML;
t=t.replace(/{(\*{1,5}}}}/g,函数(m,g){
返回“+新数组(g.length+1)。联接(★;”)+”;
});
document.getElementById(“容器”).innerHTML=t;
str.replace(/\{(\*{1,5})\}}/,函数(s1,s2){
变量i,str=“”;
对于(i=0;i
str.replace(/\{(\*{1,5})\}}/,函数(s1,s2){
变量i,str=“”;
对于(i=0;i
一行:

s.replace('{{','<span class=stars>').replace(/\*/g,'&#9733;').replace('}}','</span>');
s.replace(“{{,”).replace(/\*/g,★;”).replace(“}},”);
一行:

s.replace('{{','<span class=stars>').replace(/\*/g,'&#9733;').replace('}}','</span>');
s.replace(“{{,”).replace(/\*/g,★;”).replace(“}},”);

您的输入字符串是{{*}或*我的输入字符串是{{}。我有一个文本,其中包含多个{{}。应替换为★为什么“在一行中”?当然更好的标准是它工作、健壮、跨浏览器并且相当有效。只是让你们更难一点;)哈哈,不只是开玩笑,我想在JS中溢出尽可能多的空间。你的输入字符串是{{*}或者*我的输入字符串是{}。我有一个包含多个{{}的文本。在应替换为的文本中★为什么是“一行”?当然,更好的标准是它能工作、健壮、跨浏览器且相当高效。只是为了让你们的工作更难一点;)哈哈,不只是开玩笑,我想在JS中尽可能多地释放空间。这不起作用,看它只替换了一次出现。你没有说明你是在使用字符串插值还是实际的HTML。我认为这是最好的(字符串插值)方法。我不需要看你的小提琴,thnx。我在使用HTML,但我可以自己调整:)谢谢你的提问。作为将来的参考,直接操纵HTML比操纵字符串要贵几个数量级。如果可能,请使用字符串。这不起作用,请参阅它仅替换一次出现。您没有说明是使用字符串插值还是实际的HTML。我认为这是最好的(字符串插值)方法。我不需要看你的小提琴,thnx。我在使用HTML,但我可以自己调整:)谢谢你的提问。作为将来的参考,直接操纵HTML比操纵字符串要贵几个数量级。尽可能使用字符串。几乎。。它允许在我的花括号内有6个星号(就像你提到的,不是一行):是的,如果你想确定的话,你可以使用
\*{1,5}
。将编辑。我不确定你能不能只用一行就做到。但是让我们知道如果你找出它。现场演示:@ TeTaXa考虑使用白色空间更慷慨。另外,您不想两次查询“container”元素,只需缓存引用即可。
新数组(长度)
:)
的有趣使用模式几乎。。它允许在我的花括号内有6个星号(就像你提到的,不是一行):是的,如果你想确定的话,你可以使用
\*{1,5}
。将编辑。我不确定你能不能只用一行就做到。但是让我们知道如果你找出它。现场演示:@ TeTaXa考虑使用白色空间更慷慨。另外,您不想两次查询“container”元素,只需缓存引用即可。
新数组(长度)
:)