Вот пример: верхняя часть содержит несколько служебных функций, предназначенных для облегчения вашей жизни
В нижней части реализована настраиваемая экранирующая функция, подобная той, которую вы запрашиваете, и какsamnple это берет innerHTML из Демо ? и печатает экранированный результат.
// general utilities
// returns a function that performs some replace task, ...
const replace = (needle, replacement) => value => value.replace(needle, replacement);
// ... like escaping strings for RegExp
const escapeRegExp = replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
const sortByLengthDesc = (a, b) => b.length - a.length;
const replaceKeysWithValues = (map) => {
return replace(
new RegExp(Object.keys(map).sort(sortByLengthDesc).map(escapeRegExp).join("|"), "g"),
(key) => map[key]
);
};
// definition of the escaping to perform
const escapeTextfieldValue = replaceKeysWithValues({
'&': '&',
'<': '<',
'>': '>',
//feel free to add more pairs to replace
});
// using document.body.innerHTML as a sample text that needs to be escaped
// and writing the result into the <pre>-tag
document.querySelector("pre").textContent = escapeTextfieldValue(document.body.innerHTML);
<h4>Escaped Text</h4>
<pre>