const regex = new RegExp('<a
\\s+
((?:[^\\s<>\\'"=]+(?:=(?:"[^"]*"|\\'[^\\']*\\'|[^\\s\\'">]+))?\\s+)*)
href=(?|"([^"]*\\.(?:jpe?g|png))"|\\'([^\\']*\\.(?:jpe?g|png))\\'|([^\\s\\'">]*\\.(?:jpe?g|png))(?=[>\\s]))
((?:\\s+[^\\s<>\\'"=]+(?:=(?:"[^"]*"|\\'[^\\']*\\'|[^\\s\\'">]+))?)*)
\\s*>
(.*?)
</a>', 'gmis')
const str = `<p>С этой формы приходят заявки <a href="https://site.com/lack_tech.php">https://site.com/lack_tech.php</a></p>
<p>Или что ты имеешь ввиду?</p>
<div class="attachment_files_message">
<p>Прикреплённые файлы:</p>
<a href="http://site.com/public/uploads/kylticket/2670/Screenshot_1.png" target="_blank">Screenshot_1.png</a>
<a href=http://site.com/public/uploads/kylticket/2670/Screenshot_1.png target="_blank">Screenshot_1.png</a>
<a
target="_blank"
href="http://site.com/public/uploads/kylticket/2670/Screenshot_1.png" >Screenshot_1.png</a>
</div>`;
const subst = `<a $1$3 data-fancybox="gallery" href="$2"><img src="$2" alt="" class="tmp_class"></a>`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions