Прошу совета - стоит ли сокращать количество прохождений регулярок в тексте, или такая конструкция допустима?
P.S. 1: Операции выполняются с помощью jQuery, но думаю тема регулярных выражений в этом разделе будет актуальней.
P.S. 2: Данная функция замены выполняется только в том случае, когда нужно скопировать содержимое div в textarea, для просмотра и точной коррекции.
<div id='test' contenteditable="true"><p>Paragraph 1</p><p>Paragraph 2</p><p></p><div>Div</div><div> </div></div>
<teatarea id='correction'></textarea>
<div id='copy'></div>
$('#copy').click(function(){
$('#correction').val($('#test').html()
.replace(/<div>/g, '<p>') // заменяем блоки на параграфы
.replace(/<\/div>/g, '</p>')
.replace(/ /g, '') // удаляем неразрывные пробелы
.replace(/<p><\/p>/g, '') // удаляем пустые параграфы
.replace(/<\/p><p>/g, '</p>\r\n\r\n<p>') // добавляем переносы строк после параграфов для лучшей читаемости
);
});
Сложность в том, что текст перебирается пять раз.
Можно было бы выполнить несколько однотипных действий сразу, например
.replace(/ |<p><\/p>/g, '')
но результат не будет таким же, так как параграфы с неразрывными пробелами станут пустыми, но не удалятся, так как действия происходили паралельно а не постепенно.