2

我有一个包含内容的字符串。html我想使用 javascript 正则表达式删除标签上的style属性,如下所示:style

<style style="color: red;">

<style>

你能帮助我吗 ?

4

6 回答 6

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

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

echo $output;

输出将是这样的

<style> 
于 2013-10-24T11:24:32.923 回答
2

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

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

如果这实际上是 DOM 中的一个节点:

node.removeAttribute("style");
于 2013-10-14T08:43:50.437 回答
1

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

您可以使用 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);
于 2016-04-19T08:57:07.880 回答
1

考虑以下:

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

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

希望这可以帮助。

请参阅此图片以获取答案证明 在此处输入图像描述

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

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

请参阅此图片以获取多行替换答案的证明: 在此处输入图像描述

于 2019-09-05T07:49:37.377 回答
-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/

于 2013-10-14T08:59:28.967 回答
-1

您在问题中添加了标签“javascript”。如果您想使用 javascript 或 jQuery,则已经存在该问题(带有解决方案):

通过javascript删除html元素样式

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

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

如果您使用的是 jQuery,那么

$("#id").removeClass("classname");
于 2013-10-14T08:48:36.377 回答