2014-12-11 2 views
2

Для этого регулярного выражения:Почему это регулярное выражение соответствует закрытию>

/<(\/?)(\w+)([^>]*?)>/ 

на этой строке:

<div class='test'><b>Hello</b> <i>world!</i></div> 

матч возвращаемой:

<div class='test'> 

Я смущен на ([^>]*?) захват. Не ^> означает, что это обратное значение >?

+3

* Вздох * прекратить попытки разобрать HTML с регулярным выражением ... – PeeHaa

+1

@PeeHaa Почему нет? В любом случае, я изучаю синтаксис javascript, и это упражнение из книги – okysabeni

+0

Поскольку большинство людей не могут написать рабочий шаблон регулярного выражения, чтобы правильно разобрать html (как вы выяснили). Даже с исправлением для вашей проблемы он будет терпеть неудачу на других строках. – PeeHaa

ответ

8

Вот разбивка этого регулярное выражение:

<(\/?) соответствует открытию <, возможно, с последующим /

(\w+) матчи многих символов слова (это в круглые скобки так, группа захвата будет содержать HTML-элемент сам по себе)

([^>]*?)> соответствует несколько символов (лениво), которые не являются >, а затем >

Таким образом, в вашем примере, это правильно, что он соответствует <div class='test'>

+0

Делает смысл. Благодарю. Пространство между div и классом отбросило меня – okysabeni

Смежные вопросы