2013-05-17 23 views
1

可以說我有以下的HTML使用正則表達式來刪除HTML元素和離開內容

<b>Item 1</b> Text <br> 
<b>Item 2</b> Text <br> 
<b>Item 3</b> Text <br> 
<p><font color="#000000" face="Arial, Helvetica, sans-serif"><b>Item 4:</b></font></p> 
<p><font color="#000000" face="Arial, Helvetica, sans-serif">Detailed Description</font></p> 

和現在用的是下面的正則表達式來捕獲數據(Item 1:.*?<br>)/gi返回<b>Item 1</b> Text <br>

如何取消或刪除在<b>,</b> and <br>

被留下

商品1文字

我一直在試圖理解這個代碼<(\w+)[^>]*>.*<\/\1>,但到目前爲止沒有運氣。我在這裏看到的所有示例似乎都需要一個id類,這是我的html沒有的,所以我有點卡住了讓這些示例適合我的問題。

+0

您使用的.NET? –

+0

不,我正在尋找一個JavaScript應用程序中使用的純正規表達式 – Tom

回答

0

在正則表達式中,()代表捕獲組,可以稍後作爲變量(\ 1 \ 2 \ 3等)或有時$ 1 $ 2 $ 3訪問。所以簡單地用它們來捕捉你想要的文字。

我認爲這正則表達式會爲你工作:

<b>(Item \d+)</b>(.*?)<br> 
詳細

,表達的意思是:

  • (Item \d+):任何字符串格式化爲「項目[至少1位]
  • (.*?):任何一組字符,?最小化c字符序列中的字符。

所以現在<b>Item 5434</b>hel34lo 0345 345<br>,與上述正則表達式捕獲的組是:

  • \1 =項目5434
  • \2 = hel34lo 0345 345

我從來沒有在JavaScript編程,但更準確的說,這段代碼可能工作:

var myString = "<b>Item 5434</b>hel34lo 0345 345<br>"; 
var myRegexp = /<b>(Item \d+)</b>(.*?)<br>/g; 
var match = myRegexp.exec(myString); 
alert(match[1]); // Item 5434 
alert(match[2]); // hel34lo 0345 345 
+0

感謝您的迴應!不幸的是,這個正則表達式與我的原始代碼一樣也返回了標籤。我需要最終結果忽略那些討厭的粗體和破裂標記 – Tom

+0

我從來沒有編寫過JavaScript,但更確切地說,這段代碼可能工作,這是使用在我的文章中指定相同的正則表達式: var myString =「 項目5434 hel34lo 0345 345
「; var myRegexp =/(Item \ d +)(。*?)(?=
)/ g; var match = myRegexp.exec(myString); alert(match [1]); // Item 5434 alert(match [2]); // hel34lo 0345 345 –

+0

@DoesntMatter:如果您想提供代碼,請更新您的答案。評論中的任何代碼都很難閱讀。 – Neolisk

3

試試這個REG例如:<[^>]*>

這將刪除所有的HTML帶或不帶屬性和關閉標籤。

+0

謝謝,這是我在搜索時看到的一個例子,但似乎無法工作。你會如何將它與'(Item 1:。*?
)/ gi'結合起來。我需要一行代碼來檢索數據並省略標籤? – Tom

+0

如果一個屬性包含'>',這不起作用。 – hammar

1

這應該做的伎倆:

var matches = stringToTest.match(/(Item \d+.*?<br\/?>)/gi); 
for (var i = 0; i < matches.length; i++) { 
    matches[i] = matches[i].replace(/<[^>]+>/g, ''); 
} 
alert(matches); 

如果您有jQuery的:

alert(
    $.map(stringToTest.match(/(Item \d+.*?<br\/?>)/gi), function(v) { return v.replace(/<[^>]+>/g, '') }) 
); 
1

此正則表達式匹配bBR標籤:

</?br?\s*/?> 

要使用它在JavaScript中,你寫這樣的事情:

result = subject.replace(/<\/?br?\s*\/?>/img, ""); 

所有匹配的標籤將被替換爲空字符串。

根據我的經驗,最好用空格替換br標籤,並用空字符串替換正常的內聯標籤。如果這是你想做的事,這下正則表達式匹配只有b標籤:

</?b\s*/?> 

而這一次只匹配BR標籤:

</?br\s*/?>