2012-04-10 28 views
11

我想要得到一個正則表達式來接受<和>作爲我的外部分隔符來獲取它們之間的所有內容。正則表達式中的尖括號(< or >)是否特殊?

所以內容像這樣

<tfdsfa> 

應該抓住。

難道我必須逃避<和>字符或什麼?

正則表達式我的腳本生成的:從文件

/<[^(>)]*>/g 

代碼:

data.method.highlight = function() { 
    var x = data.syntax, 
     text = data.$.span.html(); 
    for (var i=0, len = x.length; i < len; i++) { 
     var rx; 
     if (x[i].range) { 
      rx = new RegExp(x[i].tag[0] + "[^(" + x[i].tag[1] + ")]*" + x[i].tag[1], "g"); 
      console.log(rx); 
     } 
     else { 
      var temprx = x[i].tag[0]; 
      for (var z = 1; z < x[i].tag.length; z++) { 
       temprx += "|" + x[i].tag[z]; 
      } 
      rx = new RegExp(temprx, "g"); 
     } 
     text = text.replace(rx,function (match) { 
      console.log("looping - range"); 
      return '<span class="' + x[i].class.default + '">' + match + '</span>'; 
     }); 
     data.$.span.html(text); 
    } 
}; 
+9

你的正則表達式的作品。究竟是什麼,你未能實現? – 2012-04-10 19:21:14

+0

任何時候你正在開發正則表達式都可以使用這個工具:http://gskinner.com/RegExr/ – 2012-04-10 19:22:24

+0

你能告訴你如何使用這個表達式嗎? – MilkyWayJoe 2012-04-10 19:22:49

回答

16

無論<也不>是一個正則表達式中的元字符。

這個工作對我來說:

'<foo> and <bar>'.match(/<[^>]*>/g); // ["<foo>", "<bar>"] 
+0

你可以看看我所做的編輯。當我在jsfiddle中運行它時,正則表達式起作用,但不在我的腳本中。任何想法如何發生? – 2012-04-10 19:59:21

+0

@MikeDepies,'console.log(rx)'的輸出是什麼?更具體地說,您發送給RegExp構造函數的精確字符串是什麼,「text」的精確值以及結果與期望值之間的關係? – davin 2012-04-10 20:20:42

+0

將問題解決了出來,這要感謝您詢問文本結果的最終結果。文本將<字符轉換爲它們的html特殊字符計數器部分。在發佈之前,我應該真的想過這個。謝謝。 – 2012-04-10 22:12:15

-1

可能是你有問題,因爲你試圖插入導致成HTML和瀏覽器「認爲」這是一個無效的HTML標記,像<blablabla>