如何在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>

谁能帮我?

如何在javascript和c中使用regex删除空行

如果我理解你想要实现的目标,这应该可以解决你的问题:

        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();