Ищете один выложенный JavaScript Regex заменить - PullRequest
1 голос
/ 05 декабря 2011

Я ищу замену JavaScript Regex в одной "команде".

Он должен заменить звездочки в четырех скобках (по две на каждой стороне) на код 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>

Ответы [ 3 ]

5 голосов
/ 05 декабря 2011

Не совсем одна строка, но это работает

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;
0 голосов
/ 05 декабря 2011

Одна строка:

s.replace('{{','<span class=stars>').replace(/\*/g,'&#9733;').replace('}}','</span>');
0 голосов
/ 05 декабря 2011
str.replace(/\{\{(\*{1,5})\}\}/, function (s1, s2) {
    var i, str = "<span class='stars'>";
    for (i = 0; i < s2.length; i += 1) {
        str+= "&#9733;";
    }
    str+= "</span>"
    return str;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...