如何在javascript和c中使用regex删除空行
本文关键字:regex 删除 javascript | 更新日期: 2023-09-27 18:27:38
用户通过文本编辑器输入内容,最后提交到数据库。在存储到数据库中之前,我希望删除内容开头和结尾的空行(中间不能删除)。
我想使用JavaScript和C#
样本内容为:
<div>
<p><span><br></span></p>
<span>a<br/>bc</span>
<p>te<br>st</p>
<p>'n<span>'n</span></p>
<p><span><br/></span></p>
</div>
我需要的是:
<div>
<span>a<br/>bc</span>
<p>te<br>st</p>
</div>
谁能帮我?
如果我理解你想要实现的目标,这应该可以解决你的问题:
string input = @"
<div>
<p><span><br></span></p>
<span>a<br/>bc</span>
<p>te<br>st</p>
<p>'n<span>'n</span></p>
<p><span><br/></span></p>
</div>
";
string pattern = @"(<p>)?(''n|<br/?>)?<span>(<br/?>|''n)</span>(</p>)?";
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(pattern);
string final = reg.Replace(input, String.Empty);
Console.WriteLine(final);
}
上述代码将返回:
<div>
<span>a<br/>bc</span>
<p>te<br>st</p>
</div>
然后,您可以继续修剪任何一条线,因为它看起来需要它。
问题中没有提到是要清理客户端还是服务器端的内容。
如果应该在服务器上完成,请不要使用regex。为什么?看看这个绝妙的答案。请改用HTML解析器。例如,使用HtmlAgityPack:
var doc = new HtmlDocument();
doc.LoadHtml(html);
foreach(var node in doc.DocumentNode.SelectNodes("//div|//span|//p"))
if (string.IsNullOrWhiteSpace(node.InnerText.Replace(@"'n", string.Empty)))
node.Remove();
var result = doc.DocumentNode.OuterHtml;
但是,通过使用jQuery:,它可以在客户端上更简单地完成(也没有regex)
var dom = $(html);
dom.find('p,span,div').each(function() {
if ($(this).text().trim() == '')
$(this).remove();
});
var result = dom.wrap('<div>').parent().html();