Замените все экземпляры шаблона регулярными выражениями в Javascript / jQuery - PullRequest
4 голосов
/ 25 июня 2009

Во-первых, я не знаю много о регулярных выражениях, и мне нужно купить книгу, потому что оказалось, что ее трудно поднять.

В конечном итоге я хочу взять элемент dom, заменить текст в квадратных скобках "[" и "]" и вставить ссылку вокруг текста, и в строке может быть несколько наборов скобок.

function changeTip() {  
        var link = '<a href="' + $('#txtURL').attr('value') + '" target="_blank">';
        $('.tipoftheweektip').html($('#txtTip').attr("value").replace('[', link).replace(']', '</a>'));
    }

Это работает за исключением:

  • не работает со вторым набором скобок
  • если закрывающей прямой скобки нет, он удаляет весь текст перед открывающей прямой скобкой

Я смотрел на примеры, и поскольку в коде регулярных выражений используются прямые скобки, я не могу понять, как искать скобки и заменять их.

Кто-нибудь, кто сделал что-то подобное, что они могут поделиться? Заранее спасибо.

Ответы [ 2 ]

11 голосов
/ 25 июня 2009
.replace(/\[([^\]]*)\]/g, link + "$1</a>")

, что означает, найти текст между [и] и заменить его значением ссылки, самого текста и ''. Это обеспечивает совпадение квадратных скобок. «G» означает «сделать это несколько раз (глобально)».

0 голосов
/ 13 января 2014

Это перебирает всю строку и заменяет ее выбранным вами словом или фразой другим. (довольно сложно, но работает и очень многократно)

var string = "это некоторый тестовый текст. Вы можете заменить все экземпляры любое слово / фраза в этом тексте "

var new string = string.findAndReplace ("text", "BOO!");

Object.prototype.findAndReplace = function( searchText, replace ) {
    var matchCount = 0;
        var text = this;

        for( var i = 0; i<text.length; i++ ) {
            var textSearched = "";

            for(var x = 0; x<searchText.length; x++) {
                var currentText = text[i+x];

                if( currentText != undefined ) {
                    textSearched += currentText;
                }
            }

            if( textSearched == searchText ) {
                matchCount++;
            }

            console.log( textSearched );
        }

        for(var i=0; i<matchCount; i++) {
            text = text.replace( searchText, replace );
        }

        return text;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...