Самый безопасный способ удалить ненужные пробелы - PullRequest
3 голосов
/ 06 июня 2009

У меня есть эта строка HTML, которая часто имеет много пробелов

Пример:

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

Мне нужно удалить их, используя JavaScript, и придумали это regEx:

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

Что, похоже, делает работу с заменой нежелательных пробелов, но я хочу сохранить пробелы внутри элемента PRE.

Возможно ли это с помощью регулярного выражения?

Ответы [ 2 ]

6 голосов
/ 06 июня 2009

Вы не можете сделать это с помощью регулярных выражений, и это так просто.

Регулярные выражения - плохой выбор для такого рода вещей. <pre> блоки могут содержать другие теги и так далее. А как насчет CSS (встроенного или с классами), который использует свойство white-space: pre?

HTML и браузеры прекрасно справляются с пробелами. Это действительно проблема, которую вам нужно решить? Если вам это нужно, вам нужен какой-то HTML-парсер.

2 голосов
/ 06 июня 2009

использование:

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

протестировано в Firefox 3

редактирование:

см. Тестовую страницу здесь: http://ashita.org/StackOverflow/replacetest.html

...