后台通過編輯器存儲的富文本,需要在前端列表頁等展示,需要從富文本中提取純文本,具體方法:
思路:通過正則匹配出所有的中文,然后拼接起來。
方法可以參考使用過濾器:
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;
打完收工!