如何使用 JavaScript 删除表情符号代码?我以为我已经使用下面的代码解决了它,但我仍然有像🔴这样的字符。
function removeInvalidChars() {
return this.replace(/[\uE000-\uF8FF]/g, '');
}
原文由 manraj82 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何使用 JavaScript 删除表情符号代码?我以为我已经使用下面的代码解决了它,但我仍然有像🔴这样的字符。
function removeInvalidChars() {
return this.replace(/[\uE000-\uF8FF]/g, '');
}
原文由 manraj82 发布,翻译遵循 CC BY-SA 4.0 许可协议
对我来说,没有一个答案完全删除所有表情符号,所以我不得不自己做一些工作,这就是我得到的:
text.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g, '');
此外,还应考虑到,如果稍后将字符串插入数据库,用空字符串替换可能会暴露安全问题。而是替换为替换字符 U+FFFD,请参阅: http ://www.unicode.org/reports/tr36/#Deletion_of_Noncharacters
原文由 jony89 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
2 回答7.2k 阅读✓ 已解决
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
您选择的范围是Private Use Area,包含非标准字符。运营商过去常常将表情符号编码为该范围内不同的、不一致的值。
最近,表情符号被赋予了标准化的“统一”代码点。其中许多在基本多语言平面之外,在块 U+1F300–U+1F5FF 中,包括您的示例🔴U+1F534 大红圈。
您可以在支持非 BMP 字符的正则表达式引擎中使用
[\U0001F300-\U0001F5FF]
检测这些字符,但 JavaScript 的RegExp
不是这样的野兽。不幸的是,JS 字符串模型是基于 UTF-16 代码单元的,因此您必须在正则表达式中使用 UTF-16 代理项:但是,请注意,基本多语言平面中还有其他字符被手机用作表情符号,但早于表情符号。例如,U+2665 是传统的 Heart Suit 字符 ♥,但它可能会在某些设备上呈现为表情符号图形。是否将其视为表情符号并尝试将其删除取决于您。有关更多示例,请参阅 此列表。