2009-06-24 45 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; 
    }