C# 允许在HTML';s样式属性

C# 允许在HTML';s样式属性,c#,html,css,regex,C#,Html,Css,Regex,你们能建议我如何使用C#中的regex删除HTML的syle属性中的一些CSS规则吗 我希望只允许文本对齐和边距规则。Else替换为“”(空字符串) 例如: <p style="text-align: left; margin: 5px;color: red;"><strike>iiyuyuiy</strike></p> iiyuiy 会变成这样 <p style="text-align: left; margin: 5px;">&

你们能建议我如何使用C#中的regex删除HTML的syle属性中的一些CSS规则吗

我希望只允许文本对齐和边距规则。Else替换为“”(空字符串)

例如:

<p style="text-align: left; margin: 5px;color: red;"><strike>iiyuyuiy</strike></p>
iiyuiy

会变成这样

<p style="text-align: left; margin: 5px;"><strike>iiyuyuiy</strike></p>
iiyuiy


颜色:红色;已删除。

如果您熟悉jQuery,请尝试

JQuery 纯JS
您可能知道,使用正则表达式解析html充满了危险。肯定有人会为您提供一个Dom解析器解决方案,所以这个答案主要是讨论正则表达式方面的问题

不管怎样,我通常喜欢提供一个regex解决方案,但您提议承担的任务对regex来说确实是一个可怕的任务(尽管没有人为此责备您)。为什么?

分号不是CSS规则的完美分隔符

要匹配和删除规则,您需要知道它们在哪里停止。对于CSS规则,这是分号。但是,如果CSS规则除了终止的分号之外还有一个分号,则正则表达式将失败。我心中没有一个例子,但这是一个经常讨论的问题

在一个没有麻烦分号的世界…

如果你背对着墙,如果分号不是问题,这里有一种方法可以在C#中使用,这要感谢它的无限宽度的后视

(?<=style="[^"]*)(?:(?:text-align|margin)[^";]*;|(\b[^";]*;)) 

(?为什么您需要这样做而不仅仅是覆盖CSS,如果必要,请使用!重要信息?我想阻止一些了解HTML和CSS的聪明用户,他们想要打破我的规则。
document.querySelector('#selctor').style.color= '';
(?<=style="[^"]*)(?:(?:text-align|margin)[^";]*;|(\b[^";]*;))