Используйте (.*?)
, чтобы создать группу, которая сопоставляет что-либо без жадности между хешами, затем передайте функцию стрелки в качестве второго аргумента для доступа к сопоставленной группе и верните значение, чтобы заменить ее.Доступ к группе можно получить во втором аргументе этой функции стрелки:
function highlight(message) {
return message.replace(/\/#\s*(.*?)\s*#\//g,
(_, g) => `<span className='yellow'>${g}</span>`);
}
Вы даже можете передать функцию замены в качестве аргумента, чтобы настроить замену при необходимости.
Вот примерс несколькими заменами в одной строке:
function highlight(message, replacer = s => `<span class="bold">${s}</span>`) {
return message.replace(/\/#\s*(.*?)\s*#\//g, (_, g) => replacer(g));
}
document.body.innerHTML += highlight("Hello , /#I'm#/ looking for /# job as a teacher #/");
document.body.innerHTML += highlight("<br>Nothing to replace here");
document.body.innerHTML += highlight("<br>You can pass a custom /#replacer function #/ too", s => '?' + s.toUpperCase() + '?');
.bold {
font-weight: bold;
font-size: 20px;
}