【问题标题】:Cleaning whitespace from HTML with RegEx使用 RegEx 从 HTML 中清除空格
【发布时间】:2011-12-23 15:12:54
【问题描述】:

RegEx 是否可以清除 HTML 中的空白?

例如:

<p><b>foo</b> <i>bar</i></p>
<p>foo</p> <p>bar</p>

在第一行,结束 b 和开始 i 标记之间的空格是有效的(尽管它可能是 &amp;nbsp;),但是在第二行,我希望清理空白,因为它不应该有任何语义价值。

也许这会通过 DOM 遍历更好地解决?

【问题讨论】:

    标签: javascript html regex


    【解决方案1】:

    似乎HTML Tidy 之类的东西更适合您正在寻找的东西 - 而不是需要重新创建所有可能复杂的规则(例如示例中的第一个空格很重要,但不是第二等)

    否则,我同意 - DOM 遍历将是比正则表达式更好的方法 - 特别是如果您的 HTML 已经符合 XHTML 并且可以轻松地作为 XML 遍历。

    【讨论】:

    • 我快速搜索了 HTML Tidy 的 javascript 实现,但没有运气,所以它是 DOM 遍历。我需要它尽可能快地运行,所以希望 IE 不会引起太多问题。
    • 你为什么要在 JavaScript 中这样做呢?它会给谁带来好处?所有 HTML 都已经传输到客户端并由浏览器呈现,因此您不会在带宽或浏览器呈现方面节省任何东西。
    • 那么一点额外的背景,我正在摆弄一个可内容编辑的 div 和 diff-match-patch 库。根据 contenteditable 的浏览器实现,我会得到不同数量的空白,当我在不同的浏览器之间来回切换时,会产生永无止境的差异。我能想到的最简单的解决方法是完全去除空格。
    【解决方案2】:

    首先我必须引用 ;) “要求正则表达式解析任意 HTML 就像要求帕丽斯·希尔顿编写操作系统一样” 然后回到业务上。 您可以尝试对标签使用不同的正则表达式(尽管我怀疑这是有效的方法):

    sed -e 's/<p>\ </<p></g'
    

    这将删除 &lt;p&gt;(whitespace)&lt;(whatever_tag) 空格。

    否则,我也同意DOM遍历。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 2011-07-18
      • 2018-12-17
      • 2012-05-21
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多