Замена нескольких символов в строке регулярным выражением (в поисках улучшения)

#jquery

#jquery

Вопрос:

Итак, это действительно работает, но я чувствую, что это могло бы что-то удалить, но я не могу понять, что. Мне нужно обернуть определенные буквы в теги, в этом примере k, r и s:

 var characters = new RegExp('(k|r|s)', 'gi');
$('.header h1').html(function() {
    $(this).html($(this).html().replace(characters, "<span>$1</span>"));
});
 

Любая помощь будет оценена.

Ответ №1:

Вы можете упростить, используя возвращаемые аргументы, к html(function) которым относятся индекс и текущий html

 const reg = /(k|r|s)/gi;

$('.header h1').html(function(i, curr) {
    return curr.replace(reg, "<span>$1</span>");
}); 
 .header h1 span { color: red} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="header">
   <h1>Christmas Cookies</h1>
</div>