2016-09-29 54 views
0

我想用JavaScript替換html標記中的一串字符。所以在這個例子中,我想刪除<table<tbody>之間的所有內容。我正在使用替換函數和一個正則表達式。正則表達式的構造在某個地方肯定是錯的。以下是我目前有:JavaScript正則表達式用於刪除文本

str = str.replace(/([<table]\w*\W*[<tbody>])/, ""); 

正則表達式的邏輯,我看就是這個樣子(糾正我在哪裏,我錯了):

  1. 我要找的字符串匹配的<table,所以我把這個字符串放在括號中,因爲我想要完全按照書面進行匹配。

  2. 然後我放置一個\ w * \ W *,因爲我期望一個或多個 字母數字字符和非字母數字字符跟隨。

  3. 最後I 將「< tbody>」放在括號中,因爲我期待的格式爲 。

所以結果並不如我所料。在我的字符串中沒有其他的<tbody><table,所以我不知道我在做什麼錯。

這就是字符串看起來像什麼之前,我沒有什麼替換字符。

"\n\t\t\t\t\t\t\n            <div>\n\t\t\t\t\t\t\t 
<table id=\"gvStation_ctl19_gvExtRows\" style=\"border-collapse: collapse;\" border=\"1\" rules=\"all\" cellspacing=\"0\"> 
\n\t\t\t\t\t\t\t\t<tbody> 
+0

什麼是預期的結果? –

+0

你用什麼參考材料來學習/理解正則表達式? (你有錯誤的信息) – Amit

+1

[]中的Characteres不代表一個單詞,它會匹配其中任何一個字符ex:'[

回答

1
  1. 括號以任意順序之間找到任何字符,所以你不需要它在這種情況下。見http://www.w3schools.com/jsref/jsref_obj_regexp.asp
  2. \w*\W*與空格不匹配。

這裏是解決方案:/<\s*table(?:.|\s)*<\s*tbody\s*>/i

var str = '"\n\t\t\t\t\t\t\n < div>\n\t\t\t\t\t\t\t < table id=\"gvStation_ctl19_gvExtRows\" style=\"border-collapse: collapse;\" border=\"1\" rules=\"all\" cellspacing=\"0\"> \n\t\t\t\t\t\t\t\t< tbody>'; 
 

 
str = str.replace(/<\s*table(?:.|\s)*<\s*tbody\s*>/i, ""); 
 

 
alert(str);