后台通过编辑器存储的富文本,需要在前端列表页等展示,需要从富文本中提取纯文本,具体方法:
思路:通过正则匹配出所有的中文,然后拼接起来。
方法可以参考使用过滤器:
filters:{ filtersText(val){ if (val != null && val != '') { let reg = /[\u4e00-\u9fa5]/g; let names = val.match(reg); val = names ? names.join('') : ''; return val; } else return ''; } }
这样确实可以提取到没有带标签的纯文本,但是这样获取到的是没有任何标点符号的纯文本。
继续改造:
获取到标点的正则表达式:
var reg = /[\u4e00-\u9fa5]|[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/g; var reg = /[\u4e00-\u9fa5]|[\(\)\《\》\——\;\,\。\“\”\<\>\!]/g;
所以可以将上面的正则表达式改造成:
let reg = /[\u4e00-\u9fa5]|[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/g;
或者是这样:
let reg = /[\u4e00-\u9fa5]|[\(\)\《\》\——\;\,\。\“\”\<\>\!]/g;
打完收工!