2016-10-26 3 views
0

Я пытаюсь написать RegEx, который соответствует открытому тегу HTML с атрибутом class. Так же, как следующее:RegEx для сопоставления с тегами HTML с определенными атрибутами

<!-- these should match --> 
<div class=" 
<div class="> 
<img src="image.jpg" class=" 
<img src="image.jpg" class="> 

<!-- these should not match --> 
<div> class=" 
</div class="> 

До сих пор у меня есть:

<[^/^>]+> 

Это соответствует любому открывающий HTML-тег. Я ищу, чтобы адаптировать его, чтобы найти атрибут class внутри, как в приведенных выше примерах.

ответ

0

Попробуйте это:

<[[a-z]{1,} class=">? 

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

Кроме того, я хотел бы использовать это: https://regex101.com/

Для тестирования онлайн регулярного выражения, довольно полезную небольшая площадки.

+0

Ах, вы поднимаете хороший момент, когда мои примеры матчей очень просты. Я отредактировал свой вопрос с немного другим набором совпадений. Как я могу настроить RegEx так же, как и для них? – gosseti

+0

Возможно, вам понадобится связать их. Сначала найдите все теги, затем сопоставьте их для класса. <[[a-z] {1,} + ([a-z] {1,} = ["']. * ["'])? * [\ /]?> Это может найти ваши html-теги, но тогда вам нужно будет сделать еще одну операцию для поиска класса, что-то вроде class = ['"]. * ['"]. Это регулярное выражение javascript, какой язык вы используете для фактического обработки html? – rob

+0

О, спасибо. Я использую JavaScript для чтения HTML как неэкранированной/unsanitized строки. – gosseti