因为小程序无法通过生成dom
来处理转义,故这里主要是两块内容。
html转义
function htmlDecode(text) { let temp = document.createElement("div") temp.innerHTML = text const output = temp.innerText || temp.textContent temp = null return output },
正则匹配
在这里用变量来代替replace
的//g
形式,通过new RegExp()
和模板字符串。const ESCAPE_CHARACTERS = { 'nbsp': ' ', 'lt': '<', 'gt': '>', 'amp': '&', 'apos': '\"', 'ensp': ' ', 'emsp': ' ', 'quot': '"', 'middot': '·', 'brvbar': '¦', 'mdash': '—', 'ndash': '–', 'ge': '≥', 'le': '≤', 'laquo': '«', 'raquo': '»', 'deg': '°', 'bull': '•', 'macr': '¯', '#64': '@', 'ldquo': '“', 'rdquo': '”', 'rsquo': '‚', 'lsquo': '‘', } // 处理转义字符 handleEscapeChar(str) { return str.replace(new RegExp(`&(${ Object.keys(ESCAPE_CHARACTERS).join('|') });`, 'g'), (all, t) => { return ESCAPE_CHARACTERS[t] }) }