Заменить текст, но не теги HTML?

Я выполняю сопоставление текста для автозаполнения в JQuery, перегружая метод _renderItem для проверки объекта JSON на текст, который искал пользователь. Найдя его, я заменяю его тегом span на класс user_highlight_match.

Я выполняю поиск по нескольким словам, поэтому «Джон Сми» выделит Джона, затем Сми, а поиск «Джон Джеймс Сми» выделит «Джона» и «Сми». Проблема в том, что, скажем, вы ищете «Джон Лас», он начнет сопоставляться с атрибутом класса тега span, если он уже существует. Как я могу обойти это?

Изменить: Вот код, показывающий, о чем я говорю:

renderItem = function(ul, item) {
    li = $('<li>', id: item._id);

    if this.term and not item.dialog
        terms = this.term.split(' ');

        for term in terms
            re = new RegExp("("+term+")", 'i');

            match = re.exec(item.name);
            if match
                item.name = item.name.replace re, "<span class=\"user_highlight_match\">+match[0]+</span>";
)

Таким образом, первый термин будет соответствовать отлично, но каждый раз после этого, если вы ищете что-либо в тегах html, частичное совпадение заменяется тегом. Скажем так, на «Ласе» был матч, он стал бы таким:

<span c<span class="user_highlight_match">Last</span>s="user_highlight_match">Last</span>

Ответы на вопрос(1)

Ваш ответ на вопрос