我知道正则表达式通常不应该用于解析html内容。在我的特殊情况下,我需要它们 (原因是,我正在使用rte编辑器,当粘贴到编辑器中时,需要对段落的属性进行一些替换)。
我有类似
的东西<p attribute1="val1" attribute2="val2" attribut="val3" ...>text blah blah</p>
我需要剥离所有属性以便我得到
<p>text blah blah</p>
如何使用正则表达式完成此操作?
从所有可能的html标签中删除属性的解决方案也很受欢迎。
答案 0 :(得分:5)
这样的东西应该适用于所有标签:
replace(/<\s*(\w+).*?>/, '<$1>')
仅限段落,只需替换\w
:
replace(/<\s*p.*?>/, '<p>')
开头的\s*
允许在标记名称之前添加空格,因此如果由于某种原因有< p class="foo">
,那么它也适用于此。
答案 1 :(得分:3)
因为html标记在标记名称之前不能有空格并且可以在多行上继续,所以我建议这样做:
replace(/<(\w+)(.|[\r\n])*?>/, '<$1>');
仅限段落:
replace(/<p\s+?(.|[\r\n])*?>/, '<p>');
答案 2 :(得分:0)
perl -lpe 's/(<\w+)\s+[^>]*/$1/'