2015-09-25 159 views
0

我想更換單行b/h2/h3/h4/h5標籤內標籤,與h6標籤。多行正則表達式替換標籤內部的標籤?

所以,我想這一點:

^<[b|h[2-5]]>([^\.]+)</[b|h[2-5]]>$ 

與這個被替換:

<h6>\1</h6> 

但只有當它是一個標籤,這是在不同的行內。我認爲解決方案必須包含一個關閉標籤的逆序和一個開頭負面後臺,但我不知道如何實現這一點。

+0

字符類不羣。 –

+0

如果這是針對任意文檔結構的,恐怕您可能會在不使用XML解析器來實現結果的情況下咆哮錯誤的樹。 [咆哮](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –

回答

0

正則表達式對解析任意HTML非常不利,因爲許多事情可能會出錯。

這就是說:this demo可能會讓你開始。

這不適合邊緣情況。

<div><b>This thing</div></b> 

將不能正確解析。

如果您知道您的輸入格式正確且沒有太深的嵌套(例如,<h2>內的<b>),那麼它可能會起作用。但是爲了解析HTML,你確實需要一個DOM解析器。

現在,這並不處理「之間標籤」的要求,但與Javascript(如果這是你使用的),這不是一個非常簡單的任務example。您必須反覆運行相同的流程才能將所有元素轉換爲h6

如果你使用jQuery,而不是,你可以做到這一點更安全:jsfiddle