Вот здесь в сайдбаре есть подробные объяснения:
https://regex101.com/r/ZREAov/1
.*?
Эти символы нужно рассматривать вместе. Они означают "любой символ в любом количестве, но не жадно". В данном случае "не жадно" означает "пока не встретится
>
".
<\/\2
Закрывающая скобка тега, слеш и значение из второй сохранённой группы. В данном случае -
(a|div)
, если это значение содержалось в открывающем теге.
P.S. Если у вас этот JS исполняется в браузере, то гораздо правильнее использовать DOM API вместо регулярки (не знаю, может, его и в Node завезли).