Разделение Javascript включает разделители - PullRequest
2 голосов
/ 05 сентября 2011

У меня есть следующее регулярное выражение:

(</?[a-z][a-z0-9]*[^<>]*>)

У меня есть следующий текст:

<DIV><P class='abc'>Hello <B>Mister</B>! How are you >..< doing? </P>
<I>I'm good</I></DIV>

Теперь я хотел бы разделить текст по тегам:

<DIV>
<P class='abc'>
Hello 
<B>
Mister
</B>
! How are you >..< doing?

</P>
<I>
I'm good
</I>
</DIV>

Как я могу сделать это с помощью регулярных выражений Javascript?
Был ли он в состоянии заставить его работать, но пришлось начать все сначала, потому что javascript не поддерживает lookbehinds.

(в основном разделен на HTML-тегии сохраните разделители)

Редактировать:
Моя цель в этом заключается в использовании HTML для хранения форматирования.Я хочу, чтобы передать HTML выше, в объект JavaScript.Объект javascript отделяет форматирование от текста и выполняет действие A для форматирования объектов и действие B для обычного текста.

Я знаю, что это звучит немного расплывчато, но я не хочу раскрывать слишком много о проекте.

Ответы [ 3 ]

4 голосов
/ 05 сентября 2011

Я действительно согласен с Омаром по этому вопросу, но я все равно дам вам регулярное выражение. :)

\<[^>]+?>|.+?(?=(?:<[^><]+?>|$))
1 голос
/ 05 сентября 2011

Это упоминалось бесконечно. Regex не является подходящим инструментом для этого. Regex хорош с небольшим, коротким и конечным количеством текста. Любит проверять и проверять пользовательский ввод.

Я бы посоветовал вам больше узнать о модели DOM браузера. Каждый тег является объектом в DOM, и его можно выбрать с помощью JavaScript, а также ссылаться на него. Таким способом вы можете играть со своими данными.

0 голосов
/ 05 сентября 2011

Не могу проверить прямо сейчас, но как насчет

/(<\/?[a-zA-Z]+([^"]|"(\\.|[^"])*")*>)|([^<]|<[^a-zA-Z])*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...