この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
55. HTML文字列でキーワードをハイライトする

function highlightKeywords(html, keywords) {
  keywords.forEach(keyword => {
    html = html.replace(new RegExp('('+keyword+')', 'gi'), '<em>$1</em>');
  });
  return html;
}

正規表現の ( ) はキャプチャ(マッチングした文字列を保存)用途なので、キャプチャしたくない場合は (?: ) と書くことができます。 また、gig はグローバル検索を意味し、i は大文字小文字を無視する検索を意味します。 replace メソッドの第1引数に、検索パターンを正規表現オブジェクトで指定できるので、ここでは new RegExp() を使って正規表現を動的に生成しています。