HTML-код регулярного выражения селектора


Я действительно большой noobie, когда дело доходит до regexp, так что, пожалуйста, потерпите меня. Я хотел бы создать регулярное выражение, которое может выбрать все теги HTML. У меня есть следующий селектор...

/<([A-Z][A-Z0-9]*)\\b[^>]*>(.*?)</\\1>/gi

... что отлично подходит для таких тегов, как этот...

<p>Paragraph</p>
<span>Span</span>
<p><a href="link.php">Link</a></p>

... но он не может выбрать теги, подобные этому:

<img src="picture.jpg" />

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

Спасибо Вам за ваше время,
spryno724

2   2   2011-04-26 21:30:24

2 ответа:

Хм. Итак, вы ищете что-то вроде:

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

EDIT: я просто использовал возможности Flash XML для чтения HTML. Нет необходимости в селекторах регулярных выражений!

Вот мой ActionScript

var evaluatedInput:RegExp = new RegExp('<([A-Z][A-Z0-9]*)\\b[^>]*>(.*?)</\\1>', 'gi');
var result:Object = evaluatedInput.exec("<p>Hi!</p><span>Hi!</span><table><tbody><tr><td>Hi!</td></tr></tbody></table><img src=\"nice.jpg\" />");

while (result != null) {             
  trace (result);
  result = evaluatedInput.exec("<p>Hi!</p><span>Hi!</span><table><tbody><tr><td>Hi!</td></tr></tbody></table><img src=\"nice.jpg\" />");
}

Содержимое в моем окне вывода-это именно то, что я хотел, только теги верхнего уровня выбраны:

<p>Hi!</p>,p,Hi!
<span>Hi!</span>,span,Hi!
<table><tbody><tr><td>Hi!</td></tr></tbody></table>,table,<tbody><tr><td>Hi!</td></tr></tbody>

Используя предложенное выше регулярное выражение, я получаю:

<p>,p
</p>,p
<span>,span
</span>,span
<table>,table
<tbody>,tbody
<tr>,tr
<td>,td
</td>,td
</tr>,tr
</tbody>,tbody
</table>,table
<img src="nice.jpg" />,img

Итак, чтобы улучшить новое регулярное выражение, я хотел бы:

  • выберите только HTML-теги верхнего уровня, а не вложенные теги
  • верните тег и метку атрибуты того, что он только что выбрал
  • возвращает содержимое, HTML и все, выбранного тега

Извините за список деталей аварии. : (