Как вырезать ВСЁ из строки html, включая тексты, но оставить все теги <a>и их данные без изменений с помощью регулярных выражений? - PullRequest
1 голос
/ 13 июля 2011

Во-первых, я хотел бы сказать более опытным людям, чем я, что это должно быть сделано в регулярном выражении.Нет доступа к анализатору DOM из-за странной ситуации.

Так что у меня есть полная строка HTML / XHTML и я хотел бы удалить из нее все, кроме ссылок.В основном важны только теги <a>.Мне нужны теги для полного хранения их информации, поэтому href, target, class и т. Д., И они должны работать, если это самозавершающийся тег или если он имеет отдельный конечный тег.то есть <a /> или <a></a>

Спасибо за помощь, ребята!

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Конечно, у вас есть возможность анализировать HTML в расширении Firefox. Взгляните на HTML в DOM , особенно second и третий способ.

Это может показаться более сложным, но оно менее подвержено ошибкам, чем регулярное выражение.

Как только у вас появится ссылка на проанализированный контент, все, что вам нужно сделать, это позвонить по номеру ref.getElementsByTagName('a') и все готово.

1 голос
/ 13 июля 2011
result = subject.match(/<a[^<>]*?(?:\/>|>(?:(?!<\/a>).)*<\/a>)/ig);

получает массив всех тегов <a> в исходном HTML-коде (даже самозакрывающиеся теги, которые являются недопустимыми, но которые вы специально запрашивали). Этого достаточно?

Пояснение:

<a         # Match <a
[^<>]*?    # Match any characters besides angle brackets, as few as possible
(?:        # Now either match
 />        # /> (self-closed tag)
|          # or 
 >         # a closing angle bracket
 (?:       # followed by...
  (?!</a>) # (if we're not at the closing tag)
  .        # any character
 )*        # any number of times
 </a>      # until the closing tag
)
0 голосов
/ 13 июля 2011

регулярное выражение будет выглядеть примерно так

/\<\a.*[\/]{0,1}>(.*<\/\a>){0,1}/gm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...