有什么方法可以使用 ICU4C 来检查字符串是否绝对是表情符号?具体根据这些规范:
http://www.unicode.org/reports/tr51/tr51-15.html
我可以使用那里提到的正则表达式或 ebnf 模式来扫描可能的表情符号,但根据规则验证它们仍然是一个问题。
从这些 EBNF 规则可以生成一个正则表达式,如下所示。虽然这个正则表达式可能看起来很复杂,但它比定义的结果要简单得多。直接使用定义会导致正则表达式复杂很多倍,但仍需要通过有效性测试进行验证。
\p{RI} \p{RI}
| \p{Emoji}
( \p{EMod}
| \x{FE0F} \x{20E3}?
| [\x{E0020}-\x{E007E}]+ \x{E007F} )?
(\x{200D} \p{Emoji}
( \p{EMod}
| \x{FE0F} \x{20E3}? )?)+