【问题标题】:Replace all instances of a pattern with regular expressions in Javascript / jQuery用 Javascript / jQuery 中的正则表达式替换模式的所有实例
【发布时间】:2010-11-05 16:35:15
【问题描述】:

首先,我对正则表达式了解不多,需要买一本书,因为事实证明它很难上手。

最终我想取一个dom元素,将直括号“[”和“]”内的文本替换掉,并在文本周围插入一个链接,字符串中可能有多个括号集。

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

这有效,除了:

  • 不适用于第二组括号
  • 如果没有右直括号,则删除左直括号之前的所有文本

我查看了示例,因为正则表达式代码中使用了直括号,所以我不知道如何查找括号并替换它。

有人做过类似的事情可以分享吗?提前致谢。

【问题讨论】:

    标签: jquery regex string replace


    【解决方案1】:

    这将遍历整个字符串并将其替换为您选择的单词或短语。 (有点复杂,但它可以工作并且非常可重用)

    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;
        }
    

    【讨论】:

      【解决方案2】:
      .replace(/\[([^\]]*)\]/g, link + "$1</a>")
      

      这意味着,在 [ 和 ] 之间找到文本并将其替换为链接的值、文本本身和 ''。这确保匹配方括号。 “g”表示“多次(全局)执行”。

      【讨论】:

      • 这个站点提供了一个在 JavaScript 或 .NET 中测试正则表达式的地方。它还包含许多样本,但它们并不总是正确的。 regexlib.com/RETester.aspx
      • 谢谢!你是对的,我没有考虑找到匹配的括号。我每天都学到一些东西!
      • 那个 g 标志不能跨浏览器移植。
      • @PaulBiggar,多年来我一直在多个浏览器中使用全局标志。哪些浏览器/版本不支持 g 标志?如果问题是/.../g 语法,那么构造函数是否有效?例如,new RegExp("\\[([^\\]]*)\\]", "g")
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 2023-03-21
      • 1970-01-01
      • 2012-02-12
      相关资源
      最近更新 更多