Метод replace умеет принимать функцию, которая получает найденную подстроку и должна вернуть замену:
m => `<span style="background: red;">${m}</span>`
Или, можно в строке замены указать, куда следует подставить заменяемую подстроку:
'<span style="background: red;">$&</span>'
Ерунду с интервалом уберите. Замену производите у текстового содержимого вместо разметки. Т.е.:
const p = document.querySelector('.resultParagraph');
document.querySelector('.input').addEventListener('keypress', e => {
if (e.key === 'Enter') {
const regex = RegExp(e.target.value, 'gmi');
const replacement = '<span style="background: red;">$&</span>';
p.innerHTML = p.textContent.replace(regex, replacement);
}
});