【发布时间】:2012-09-13 18:18:25
【问题描述】:
我仍然无法使用正则表达式,因此无法找到最终解决方案来使用带有 Javascript 的 RegEx 从
...
中删除所有样式,但是 保留颜色和背景颜色(如果存在)。我发现了什么:
1.使用正则表达式删除完整的 style="..." 元素:
htmlString = (htmlString).replace(/(<[^>]+) style=".*?"/i, '');
2.使用 RegEx 删除某些样式:
htmlString = (htmlString).replace(/font-family\:[^;]+;?|font-size\:[^;]+;?|line-height\:[^;]+;?/g, '');
挑战:如果我们删除了所有分配的样式(不存在颜色),并且样式为空(我们有 style="" 或 style=" "),那么也应该删除 style 属性。
我猜我们需要两行代码?
任何帮助表示赞赏!
示例 1(列入白名单的“颜色”仍然存在):
<p style="font-family:Garamond;font-size:8px;line-height:14px;color:#FF0000;">example</p>
应该变成:
<p style="color:#FF0000;">example</p>
示例 2(所有样式都死掉):
<p style="font-family:Garamond;font-size:8px;line-height:14px;">example</p>
应该变成:
<p>example</p>
【问题讨论】:
-
不要使用正则表达式解析或修改 HTML。结局不会很好。
-
我知道这个讨论谢谢 :) 就我而言,使用 RegEx 很好。
-
它不是,它永远不会很好,它充其量是可行。 unless you are a devil worshipping, virgin-blood drinking wonderpony,请改正你的方式......请
-
“不管我们说多少次,他们每天都不会停止......” +1 --- 但是,我上面的例子可以用于其他场景(XML),并且不能绑定到 HTML ;)
-
我假设您事先不知道样式属性出现的顺序,对吧?因为真的,在那种情况下,你不会用正则表达式得到满意的解决方案。
标签: javascript regex