我想使用Javascript的split函数来分割表情符号字符串。在stackoverflow中有很多这样的问题,但我找不到任何已完成的解决方案。所以我按照自己的方式做到了:
a)使用带有正则表达式的split函数。
b)通过正则表达式unicode匹配拆分表情符号字符:从\ uD800到\ uDBFF,从\ uDC00到\ uDFFF。
c)在此正则表达式中,排除零加盟(\ u200D)和变体选择器(\ uFE0F)字符。 所以我写了如下:
var p = '❤️';
并拆分:
var split = p.split(/(?![\u200D\uFE0F])([\uD800-\uDBFF][\uDC00-\uDFFF])/);
但结果是错误的:(
["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "❤️", "", "", "", ""]
我是否正在使用排除选择器进行正则表达式?如果对,我的想法引起的错误? 预期结果必须是:[“”,“”,“”,“”,“”,“”,“”,“”,“❤️”]
===
我想更新信息。我为我的网站解决了这个问题:https://www.emojionline.org。你可以测试一下。我只是使用一个包含所有表情符号的字典,我使用替换功能用| emoji |替换每个表情符号。我可以通过符号分割字符串表情符号。这很好用:))
答案 0 :(得分:3)
我通过Mathias Bynens扩展了emoji-regex一点PassVariable() {
echo $1 # Print first parameter
}
PassVariable "$OrderID"
替代方案。它匹配一个普通的2字节表情符号,后面跟着两个或多个序列(这可以通过[\uD800-\uDBFF][\uDC00-\uDFFF](?:[\u200D\uFE0F][\uD800-\uDBFF][\uDC00-\uDFFF]){2,}
限制量词来控制)零宽度连接符或变体选择器以及常见的2字节表情符号字符。
如果没有替代方案,结果为{2,}
。
[ '','','','','','','','','','❤️' ]