我尝试从内联样式中仅删除一个属性float
及其值。我想从这开始:
<div id="first_line_info" style="width:490px; float:right;"> </div>
并且像这样:
<div id="first_line_info" style="width:490px"> </div>
到目前为止,我已经尝试过这段代码:
Regex noInlineStylePattern = new Regex("style=\"[^\"]*\"", RegexOptions.IgnoreCase);
data = noInlineStylePattern.Replace(data, "");
这将删除所有内联样式。我怎样才能删除浮动?
答案 0 :(得分:13)
这应该删除所有花车:
data = Regex.Replace(data, @"(style=\"".*?)(float:\s*[^;\""]+;?)(.*?\"")", "$1$3", RegexOptions.IgnoreCase)
答案 1 :(得分:9)
此代码删除样式元素中除第一个属性
以外的所有属性string test = @" <div id=""first_line_info"" style=""width:490px; float:right;""> </div>";
var result = Regex.Replace(test,"(style=\")(.*?;).*\"", new MatchEvaluator((m)=>
{
return m.Groups[1].Value + m.Groups[2].Value + @"""";
}));
此代码仅从样式元素
中删除浮动属性var result2 = Regex.Replace(test, "(style=\".*?;).*(float:.*?;)\"", new MatchEvaluator((m) =>
{
return m.Groups[1].Value + @"""";
}));
答案 2 :(得分:1)
我们可以通过dom操作实现相同的目标:
var dom = document.createElement('div');
dom.innerHTML = `<div id="first_line_info" style="width:490px; float:right;"> </div>
<div id="first_line_info1" style="width:490px;float:left;float:right"> </div>
`;
var elem = dom.getElementsByTagName('div');
var len=elem.length;
for(var i=0;i<len;i++){
elem[i].style.float = null;
//float removed
}
console.log(dom.innerHTML);
从dom操作加正则表达式替换方法:
优点:只需要匹配浮动而不是样式和浮动
var dom = document.createElement('div');
dom.innerHTML = `<div id="first_line_info" style="width:490px; float:right;"> </div>
<div id="first_line_info1" style="width:490px; float:right;float:left"> </div>
`;
var elem = dom.getElementsByTagName('div');
var len=elem.length;
for(var i=0;i<len;i++){
var style=elem[i].getAttribute('style');
var regex = /(float:\w+;*)/g;
style = style.replace(regex, "");
//float removed
elem[i].setAttribute('style',style);
}
console.log(dom.innerHTML);
答案 3 :(得分:-1)
在匹配组值中,您可以替换它。
(float:.*?;)
1. float:right;