Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите пожалуйста с регуляркой (https://javascript.ru/forum/misc/46484-pomogite-pozhalujjsta-s-regulyarkojj.html)

vivalaakam 11.04.2014 15:35

Помогите пожалуйста с регуляркой
 
Есть строка, в котоорй куча тегов blockquote, притом они могут быть вложены друг в друга, в кажом blockquote есть ссылка, суть состоит в том, что из первых(не вложенных) blockquote надо вытянуть href ссылки с определенным классом
(<blockquote\s*[^>]*>(.*)<a\s*[^>]*(?:href=["']([^\'\"]+))\s*[^>]*>(?:[\S\s]*?)<\/a>(.*)<\/blockquote>)/gi

ищет, если только blockquote находятся на разных строчках, и если вложенные blockquote , то находит ссылку вложенного

http://regex101.com/r/yS2hF2 здесь моя попытка сделать чудо =)

Sweet 11.04.2014 16:12

Цитата:

Сообщение от vivalaakam
Есть строка

А почему строка? Ты это в браузере делаешь? Откуда эта строка берётся?
Цитата:

Сообщение от vivalaakam
притом они могут быть вложены друг в друга

В смысле в blockquote может быть вложен другой blockquote???

vivalaakam 11.04.2014 16:18

Цитата:

Сообщение от Sweet (Сообщение 307308)
А почему строка? Ты это в браузере делаешь? Откуда эта строка берётся?

строка берется из textarea
Цитата:

Сообщение от Sweet (Сообщение 307308)
В смысле в blockquote может быть вложен другой blockquote???

В ссылке, в первом сообщении есть вполне живой пример

Sweet 11.04.2014 16:28

Цитата:

Сообщение от vivalaakam
в первом сообщении есть вполне живой пример

Я просто там сразу не увидел blockquote в blockquote. Теперь увидел. Значит регулярки точно не вариант.

Цитата:

Сообщение от vivalaakam
строка берется из textarea

Распарси её браузером и найди, что надо обычными методами:
var html = textarea.value;

var temp = document.createElement("div");
temp.innerHTML = html;

temp.querySelectorAll("a.comm_link"); // вот твои ссылки

vivalaakam 11.04.2014 16:35

Сам уже склонился к мнению, что проще будет обычными методами искать. Спасибо


Часовой пояс GMT +3, время: 13:35.