3

我有这个通常有很多空格的 HTML 字符串

例子:

<p>All     these words <br />
<strong>All</strong>   <em>these</em>   words
<pre>    All    these words</pre>
</p>

我需要使用 JavaScript 删除它们,并提出了这个正则表达式:

String.replace(/ {2,}/g, '');

这似乎可以替换不需要的空格,但我想保留 PRE 元素内的空格。

这可以用正则表达式吗?

4

2 回答 2

6

你不能用正则表达式来做到这一点,就这么简单。

对于这种事情,正则表达式是一个糟糕的选择。<pre>块可以包含其他标签等等。white-space: pre还有使用该属性的 CSS(内联或带类)呢?

HTML 和浏览器可以很好地处理空白。这真的是您需要解决的问题吗?如果你这样做,你需要某种 HTML 解析器。

于 2009-06-06T10:56:37.633 回答
2

采用:

String.replace(/(<pre[\s\S]*?>[\s\S]*?<\/pre>)| {2,}/ig, '$1')

在 Firefox 3 中测试

编辑:

在这里查看测试页面:http: //ashita.org/StackOverflow/replacetest.html

于 2009-06-06T10:41:22.203 回答