2009-06-24 40 views
4

首先,我对正则表达式知之甚少,需要购买一本书,因为它已被证明对我来说很难拾取。用Javascript中的正则表达式替换模式的所有实例/ jQuery

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

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

这工作情况除外:

  • does not工作在第二组括号
  • 如果心不是一个封闭直括号,它会删除所有文字开幕直括号前

我看过例子,因为直角括号用在正则表达式代码中,所以我无法弄清楚如何查找括号并将其替换。

任何人都在那里做了类似的事情,他们可以分享?提前致谢。

回答

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

这意味着,找到[和]之间的文本,并用链接值,文本本身和''替换它。这确保匹配方括号。 'g'的意思是'多次(全球)'。

+0

本网站提供了一个在JavaScript或.NET中测试正则表达式的地方。它也包含许多样本,但它们并不总是正确的。 http://www.regexlib.com/RETester.aspx – 2009-06-24 22:22:12

0

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

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

变种新的字符串= 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; 
    }