如何从textarea解析并去除特殊字体、花式文本及表情符号
移除textarea中的花式文本与特殊字符方案
方案一:转换花式字符为普通文本
若需保留文本内容,仅将特殊字体字符(如🅵🅰🅽🅲🆈)转为普通字母,可通过匹配对应Unicode区块进行映射:
- 处理圆圈大写字母(🅰-🆉):
e.content = e.content.replace(/[\u{1F770}-\u{1F789}]/gu, match => { return String.fromCodePoint(match.codePointAt(0) - 0x1F72F); });
- 处理数学粗体无衬线字母(𝐀-𝐙、𝐚-𝐳):
// 大写字母映射 e.content = e.content.replace(/[\u{1D400}-\u{1D433}]/gu, match => { return String.fromCodePoint(match.codePointAt(0) - 0x1D400 + 0x0041); }); // 小写字母映射 e.content = e.content.replace(/[\u{1D468}-\u{1D49B}]/gu, match => { return String.fromCodePoint(match.codePointAt(0) - 0x1D468 + 0x0061); });
其他类型的花式字符(如手写体、斜体字)可依此逻辑扩展:先确定目标字符的Unicode范围,再计算与普通字母的码点差值完成映射。
方案二:直接过滤非标准文本字符
若仅需保留ASCII可打印字符(字母、数字、常用符号),可使用正则直接移除所有非目标字符:
e.content = e.content.replace(/[^\x20-\x7E]/g, '');
若需同时保留中文,调整正则为:
e.content = e.content.replace(/[^\u4E00-\u9FA5\x20-\x7E]/g, '');
合并表情移除逻辑
方案二的正则已覆盖表情符号的移除需求(表情均为非ASCII字符)。若需与你现有的表情过滤规则结合,可合并正则:
e.content = e.content.replace(/([✀-➿]|[-]|�[�-�]|�[�-�]|[‑-⛿]|�[�-�]|[^\u4E00-\u9FA5\x20-\x7E])/g, '');
内容的提问来源于stack exchange,提问作者Shoaib Fareed
相关产品推荐
相关产品推荐

