删除样式标记上的样式属性

时间:2013-10-14 08:40:52

标签: regex

我的 STRING 带有html内容。我想使用javascript regex删除style标记上的style属性,如下所示:

之前的

<style style="color: red;">

后的

<style>

你能帮助我吗?

6 个答案:

答案 0 :(得分:6)

$input = '<style style="color: red;">';

$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);

echo $output;

输出将是这样的

<style> 

答案 1 :(得分:1)

假设你有一个字符串(这是一个非常基本的例子,它不会处理例如属性值中的转义引号):

str = str.replace(/style="[^"]*"/, "");

如果它实际上是DOM中的节点:

node.removeAttribute("style");

答案 2 :(得分:0)

如果我正确理解您的问题,您希望在没有使用浏览器的情况下(即在节点环境中)使用Javascript去除具有HTML内容的字符串中的样式属性。

您可以使用RegEx删除它们。 要么只对具有样式属性的所有标记执行此操作:

// For all tags:
myString = '<style style="color: red;">';
myString = myString.replace(/(<[^>]+) style=".*?"/ig, '$1');
console.log(myString);

或者只是带有样式属性的样式标记:

// For style tags only:
myString = '<style style="color: red;">';
myString = myString.replace(/(<style[^>]*) style=".*?"/ig, '$1');
console.log(myString);

答案 3 :(得分:0)

请考虑以下内容:

var testHtmlString = '<p style="color: rgb(0, 0, 0); font-family: "Times New Roman";"></p>';
var regex = /style=".*?"\S"/

尝试做testHtmlString.replace(regex, '')

希望这会有所帮助。

请参考此图片作为答案的证明 enter image description here

如果有多行HTML,例如您有大量需要删除其内联样式的HTML,请使用以下-

testHtmlMultilineString.replace(/style=".*?"/mg,'')

请参考此图片以获取多行替换答案的证明: enter image description here

答案 4 :(得分:-1)

您在问题中添加了“javascript”标记。如果你想使用javascript或jQuery,那么已经存在这个问题(使用解决方案):

removing html element styles via javascript

例如,给你的元素'id'或'class'并使用:

getElementById("id").removeAttribute("style");

如果您使用的是jQuery,那么

$("#id").removeClass("classname");

答案 5 :(得分:-1)

这是一种使用<style>的荒谬方式,但无论如何。你可以这样做:

var styles = document.getElementsByTagName('style');
for ( var i = 0, l = styles.length; i < l ; i++ ){
    styles[i].removeAttribute('style');
}

小提琴工作http://jsfiddle.net/xabe7/