需要将富文本中的标签和特殊字符过滤提取纯文本内容,就上网找了下,但是发现都不是我想要的。所以找了下之前自己写的过滤方法,在这里记录下,方便之后使用查找。功能比较简单,就直接上代码。
/** * 将富文本转换为纯文本内容 * @function * @param {*} html 富文本内容 * @returns {string} 返回纯文本内容、 */ export function getSimpleText(html) { const re1 = new RegExp("<.+?>", "g"); // 匹配html标签的正则表达式,"g"是搜索匹配多个符合的内容 const arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"', 'ldquo': '“', 'mdash': '—', "rdquo": '”' }; return html.replace(re1, '').replace(/&(lt|gt|nbsp|amp|quot|ldquo|mdash|rdquo);/ig, function (all, t) { return arrEntities[t]; }); }
过滤替换单个标签可以通过如下的方法实现,我这里是用于替换 img 标签,大家可以根据需要将img标签改为需要替换查找的标签。
/** * 替换富文本中的image标签,使用占位符显示,hover弹框显示 * @param {*} html */ export function replaceHtmlImages(html) { return html.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) { return `<img class="hoverImg" onClick="openImg('${capture}')" style="cursor:pointer;height:18px !important;width:18px !important;" src="${picIcon}" alt="图片" />`; }); }
大家自取自用,多多益善~