Показать сообщение отдельно
Старый 05.09.2011, 13:15
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 17  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По поводу взять книжку по регулярным выражениям - было неплохое замечание...
Несколько вещей:
То, что находится внутри [] (квадратных скобок) - это character class, там не важен порядок / последовательность, поэтому символы которые в других случаях влияют на порядок выполнения, тут не применимы, равно как и квантификаторы, зато у некоторых других символов появляются новые значения.
Это значит, что в выражении /[<\/br>|<br>]/g одна `b' и одна `r' - лишние, а `|' - не нужна.
Далее, обычные захватывающие группы в ECMAScript регулярных выражениях не нужно начинать с `?:' - это избыточно. Это значит, что (?: *\/) лучше было бы записать ( *\/).
Далее, еслу уж мы собираемся искать все "валидные" <br> теги, то, вы не поверите, но у этих тегов
1. разрешены аттрибуты. Например, вы можете указать стиль или класс... вот тако-то...
2. по спецификации пробельными элементами считаются пробел, символ табуляции, перевод строки, возврат каретки.
Поэтому, если уж иксать с помощью регулярных выражений, то:
/<\/?br[^>]*>/gmi
Не забывайте, что HTML не чуствителен к регистру. Но лучше - не заниматься ерундой, и использовать XML, если возможно, и просто удалить все узлы с именем /br/i потому что выражение приведенное выше будет удалять и в комментариях и в CData, а это может быть нежелательно.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 06.09.2011 в 14:31.