<input class="input" type="text" placeholder="enter regExp here">
<p class="resultParagraph">"At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat."</p>
let input = document.querySelector('.input');
let p = document.querySelector('.resultParagraph');
let startParagraph = p.innerHTML;
setInterval(()=>{ // просто функция чтобы параграф возвращался к стартовому значению
if(!input.value)
p.innerHTML = startParagraph;
}, 1000);
input.addEventListener('keypress', (e)=>{
if(e.keyCode === 13){
let res = new RegExp(input.value, 'gmi');
let m = p.innerHTML.match(res);
p.innerHTML = p.innerHTML.replace(res, '<span style="background: red;">'+m[0]+'</span>'); // ! ! !
}
});
Мне нужно, чтобы при вводе в поле
input
регулярного выражения, оно находилось в тексте и окрашивалось в (ну к примеру) в красный цвет. Всё бы хорошо, но интересует реализация данной задачи без
m[0]
, т.к. к примеру если регулярка учитывает наличие флага
i
(а она у меня учитывает) то получается что я заменяю вот этим вот
m[0]
даже те найденные в тексте совпадения, которые к примеру начинались с заглавной буквы, что разумеется мне не нужно, мне лишь нужно чтобы найденные совпадения подкрашивались, при этом не изменяя регистр. Просьба предложить вариант реализации, при котором если к примеру я введу в инпут
at
в тексте не заменятся все подстроки 'at' на 'At' т.к.
m[0]
в данном случае равняется
At
.