Можно ли как-нибудь использовать 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}? )?)+