Здравствуйте, есть выражение в js:
function isHTML(str) {
return /<(br|img).*?>\b|<(a|div).*?<\/\2>/i.test(str);
}
<
- это открывающая скобка тега
(br|img)
- это то что идет сразу после открывающей скобки - название тега - либо br либо img
.
- (десятичная точка) соответствует любому символу кроме переноса строки.
*
- означает ноль или более вхождений предыдущего символа)
?
- Означает «ноль или один». То же самое, что и {0,1}. По сути, делает символ необязательным.
>
- это закрывающая скобка тега
То есть найдет одиночные теги
br
и
img
в которых после названия тега идет любой символ(.), в любом количестве(*), но при этом эти символы после названия тега не обязательны(?)
Во второй части ищет парные теги
<a
или
div
. Тут сначала и в конце все то же самое:
<
- это открывающая скобка тега
(a|div)
- это то что идет сразу после открывающей скобки - название тега - либо br либо img
.
- (десятичная точка) соответствует любому символу кроме переноса строки.
*
- означает ноль или более вхождений предыдущего символа)
?
- Означает «ноль или один». То же самое, что и {0,1}. По сути, делает символ необязательным.
<\/\2
-
что значит эта часть?
>
- это закрывающая скобка тега
Спасибо.