正则表达式匹配Mac OS X/iOS中的表情符号

Ste*_*fan 9 ruby regex unicode emoji

注意:这个问题在不支持包含的表情符号的系统上看起来很奇怪.

这是如何从字符串中删除表情符号的后续问题.

我想构建一个正则表达式,匹配可以在Mac OS X/iOS中输入的所有表情符号.

明显的Unicode块涵盖了大多数,但不是所有这些表情符号:

维基百科提供了OS X Mountain Lion和iOS 6上Apple Color Emoji中可用所有符号的编译列表,这看起来是一个很好的起点:(稍微更新)

people  = '????????'
nature  = '????????'
objects = '?????????????'
places  = '?????????'
symbols = '1??2??3??4??5??6??7??8??9??0??#??????????????????????????????????????????????????????????????????????????????????????©?®?™??????????????????????????????????????????????'

emoji = people + nature + objects + places + symbols # all emoji combined
Run Code Online (Sandbox Code Playgroud)

大多数字符都有一个代码点,转换它们很容易:

  • U + 1F600(笑脸)

但有些字符是"使用两个 Unicode值编码":

  • ☺️U+ 263A U + FE0F(白色笑脸,变奏选择器16)
  • U + 1F1EF U + 1F1F5(区域指标符号字母J /区域指标符号字母P)
  • ⬛️U+ 2B1B U + FE0F(黑色大方形/变化选择器16)

有些甚至有3个代码点:

  • ️⃣U+ 0023 U + FE0F U + 20E3(数字符​​号/变化选择器16 /组合封闭键帽)

(变奏选择器16表示"表情符号样式")

如何将此列表拆分为字符(不拆分组合字符),找到它们的代码点,最后构建匹配它们的正则表达式?

正则表达式不必尊重较大块中的"缺失"字符,即如果完全覆盖上面提到的4个Unicode块,则可以.

(如果我没有得到任何答案,我会自己回答这个问题,但也许有一个简单的解决方案)

Mat*_*ens 4

即将推出的Unicode 表情符号数据文件将对此有所帮助。目前这些仍然是草稿,但它们仍然可能对您有所帮助。

\n\n

通过解析http://www.unicode.org/Public/emoji/1.0/emoji-data.txt你可以很容易地得到 Unicode 标准中所有表情符号的列表。(请注意,其中一些表情符号由多个代码点组成。)一旦有了这样的列表,\xe2\x80\x99 将其转换为正则表达式就很简单了。

\n\n

这里\xe2\x80\x99s是一个JavaScript版本: https: //github.com/mathiasbynens/emoji-regex/blob/master/index.js这里\xe2\x80\x99s是根据以下数据生成它的脚本emoji-data.txt: https: //github.com/mathiasbynens/emoji-regex/blob/master/scripts/generate-regex.js

\n