2011-02-03 95 views
2

我知道正則表達式通常不應該用於解析html內容。在我的特殊情況下,我需要他們 (原因是,我正在使用一個編輯器,當粘貼到編輯器中時,需要完成段落屬性的替換)。從段落中刪除所有屬性的正則表達式

我有類似

<p attribute1="val1" attribute2="val2" attribut="val3" ...>text blah blah</p> 

,我需要剝離出所有屬性,使我得到

<p>text blah blah</p> 

這又如何使用正則表達式來實現?

從所有可能的html標籤中去除屬性的解決方案也是值得讚賞的。

回答

5

像這樣的東西應該對所有的標籤工作:

replace(/<\s*(\w+).*?>/, '<$1>') 

對於段落而已,只是更換\w

replace(/<\s*p.*?>/, '<p>') 

中開始\s*允許標籤名之前的空白,所以如果你出於某種原因有< p class="foo">,它也適用於此。

+0

什麼我只用段落嗎? – Thariama 2011-02-03 12:18:00

+0

的作品就像一個魅力 - 非常感謝+1 – Thariama 2011-02-03 12:37:05

+0

`

`無效HTML – winhowes 2015-02-22 07:25:41

0
perl -lpe 's/(<\w+)\s+[^>]*/$1/' 
3

因爲HTML標籤不能有標籤名稱前空間,可以繼續在多條線路我反而建議是:

replace(/<(\w+)(.|[\r\n])*?>/, '<$1>'); 

且僅用於段落:

replace(/<p\s+?(.|[\r\n])*?>/, '<p>'); 
相關問題