簡體   English   中英

使用正則表達式刪除html元素並保留內容

[英]Using Regex to remove html elements and leave the content

可以說我有以下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卻沒有,因此我在獲取這些示例以適應我的問題方面有些困惑。

試試這個reg ex: <[^>]*>

這將刪除所有帶有或不帶有屬性和結束標記的html。

這應該可以解決問題:

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, '') })
);

此正則表達式將匹配bbr標簽:

</?br?\s*/?>

要在Javascript中使用它,您需要編寫如下代碼:

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

所有匹配的標簽將替換為空字符串。

以我的經驗,最好用空格替換br標簽,並用空字符串替換普通的內聯標簽。 如果這是您要執行的操作,則此下一個正則表達式僅匹配b個標記:

</?b\s*/?>

並且此僅匹配br標簽:

</?br\s*/?>

在正則表達式中,()之間的內容表示捕獲組,以后可以將其作為變量(\\ 1 \\ 2 \\ 3等)或有時$ 1 $ 2 $ 3進行訪問。 因此,只需使用它們即可捕獲所需的文本。

我認為此正則表達式將為您工作:

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

詳細地,該表達式表示:

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

因此,現在在<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM