Здравствуйте, есть выражение в 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 -
что значит эта часть?
> - это закрывающая скобка тега
Спасибо.