与在Javascript / jQuery的正则表达式替换模式的所有实例(Replace all i

2019-06-24 03:24发布

首先,我不知道很多关于正则表达式,需要购买一本书,因为它已被证明我是难以回升。

最后,我想利用DOM元素,并更换直括号内的文字“[”和“]”,并插入周围的文本的链接,并可能有多个支架套的字符串中。

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

这工作情况除外:

  • 在第二组括号不工作
  • 如果心不是一个封闭直括号,它将删除打开直括号之前的所有文字

我已经看了例子,因为直括号在正则表达式的代码中使用,我找不出如何寻找一个支架和更换。

任何人在那里已经做过类似的东西,他们可以分享? 提前致谢。

Answer 1:

.replace(/\[([^\]]*)\]/g, link + "$1</a>")

这意味着,找到之间[和]的文字和与链接的值,文本和“”代替它。 这确保匹配方括号中。 中的“g”表示“多次做(全局)”。



Answer 2:

通过整个字符串这将循环,并与您所选择的词或词组替换另一个。 (有点复杂,但它的工作原理,是非常可重复使用)

VAR字符串=“这是一些测试文本。您可以将此文本中替换任何词/短语的所有实例”

VAR新的字符串= string.findAndReplace( “文字”, “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;
    }


文章来源: Replace all instances of a pattern with regular expressions in Javascript / jQuery