Your code is malfunctioning at the first replace() line.
I write line because the code isn't malfunctioning on replace() function but on assignment !
If you simply write
var s = "<a"; // s for string
variable s is assigned to "<a" string;
But if you write
var e.innerHTML = "<a"; // e for element
inner HTML of element e don't contains anything.
Assignment is refused because "<a" assigned value represent a HTML element's part that is not complete.
JavaScript refuses to assign "<a" value to prevent DOM from being temporarily inconsistent !
var e2 = document.getElementById("element2") ;
e2.innerHTML= "<a";
console.log("e2.innerHTML: [" + e2.innerHTML + "]");
var e3 = document.getElementById("element3");
e3.innerHTML= "<a>";
console.log("e3.innerHTML: [" + e3.innerHTML + "]");
var e4 = document.getElementById("element4") ;
e4.innerHTML= "<a href='#section'>hyperlink</a>";
console.log("e4.innerHTML: [" + e4.innerHTML + "]");
<div>
<span>[</span>
<span id="element1">aaaaaa/cat/bbbbbb</span>
<span>] initial</span>
</div>
<div>
<span>[</span>
<span id="element2">aaaaaa/cat/bbbbbb</span>
<span>] cleared</span>
</div>
<div id="a-tag-empty">
<span>[</span>
<span id="element3">aaaaaa/cat/bbbbbb</span>
<span>] copied but empty display</span>
</div>
<div id="a-tag-full">
<span>[</span>
<span id="element4">aaaaaa/cat/bbbbbb</span>
<span>] ok</span>
</div>