Regex extract and replace HTML entities

I have some data source that I cannot control which returns strings. Sometimes these strings may have HTML character entities in them that I need to replace (only the apostrophe, &$82167;, has been identified so far, but it would be wise to consider all entities and multiple occurrences).

For example, the string The cat’s dog’s hamster ran away. should become The cat's dog's hamster ran away.

I’ve identified a starting point of a solution using fromCodePiont() along with this answer to another thread, but where I’m struggling is it does not replace the special characters and fails with multiple occurrences. I’ll keep playing around with this, but my current experiment looks as follow:

const str = "The cat’s dog's hamster ran away.";

// (?<=&#) -> postive lookbehind for '&#'
// d+     -> match for multiple digits
// (?=;)   -> lookahead for ';'
const regex = new RegExp(/(?<=&#)d+(?=;)/g);
const matched = str.match(regex); // Finds 8217

const replaced = str.replaceAll(regex, String.fromCodePoint(matched));
console.log(replaced);

This yields The cat&#';s dog's hamster ran away., which is getting there, but still some work to do. Not to mention it fails if more/other code entities are added.