Оборачиваем один символ:
$('span').html(function() {
return $(this).text().replace('*', '<b>*</b>');
});
Все, что есть:
document.querySelectorAll('span').forEach(n => {
n.innerHTML = n.textContent.replace(/\*/g, '<b>$&</b>');
});
UPD. Вынесено из комментариев:
а в конец строки её можно переместить?
А сразу нельзя было сказать, чего вам надо?
$('span').html(function() {
const text = $(this).text();
return text.includes('*') ? `${text.replace('*', '')}<b>*</b>` : text;
});
// или
for (const n of document.getElementsByTagName('span')) {
n.innerHTML = n.innerText.replace(/([^*]*)(\*)(.*)/, '$1$3<b>$2</b>');
}