http://en.wikipedia.org/wiki/Emoji#Regional_Indicator_Symbols
http://www.unicode.org/faq/emoji_dingbats.html#4
搜了一下 emoji 在 unicode 6.3 里的编码范围
- Miscellaneous Symbols, Pictographs, Emoticons: 1F300-1F64F
- Transport and Map Symbols: 1F680-1F6FF
下面三个范围包括部分 emoji...:
- Miscellaneous Technical: 2300-23FF
- Miscellaneous Symbols: 2600-26FF
- Dingbats: 2700-27BF
为了更精确做了点实验,发现上面三个范围中,这些是 emoji 符号:
231a, 231b, 23e9-23ec, 23f0, 23f3
2614, 2615, 2648-2653, 267f, 2693, 26a1, 26aa, 26ab, 26b3-26bd, 26bf-26e1, 26e3-26ff
2705, 270a, 270b, 2728, 274c, 274e, 2753, 2757, 2795, 2796, 2797, 27b0, 27bf
另外这个是特殊的:
- Regional Indicator Symbol 1f1e6-1f1ff
这些是虚线框字母,但每两个连起来就能变成小国旗
最终的正则:
str.gsub /[\u{1F300}-\u{1F64F}\u{1F680}-\u{1F6FF}\u{1F1E6}-\u{1F1FF}
\u231A\u231B\u23E9-\u23EC\u23F0\u23F3
\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26B3-\u26BD\u26BF-\u26E1\u26E3-\u26FF
\u2705\u270A\u270B\u2728\u274C\u274E\u2753\u2757\u2795\u2796\u2797\u27B0\u27BF
\u{1F1E6}-\u{1F1FF}]/x, ''
大概... 可能会有遗漏...