我转换了取自 https://twemoji.maxcdn.com/v/latest/twemoji.js 的正则表达式匹配从 javascript 到 php 的表情符号相关的 Unicode 字符。
当我使用 regex101.com 测试转换后的正则表达式时,它按预期工作
但是,当我在本地环境中测试时,它不起作用。
您可以在此处查看工作示例 https://regex101.com/r/IuIhBF/1
这是 PHP 版本。 http://sandbox.onlinephpfunctions.com/code/3bd5933f5230fc1c45104b7eccd9379b68870016
我尝试更改 preg_match_all 标志。 将 u 添加到正则表达式 ex:/*****/u
无法正常工作
如果有人能帮我解决这个错误,那就太好了: 编译失败:字符类中偏移量 306 处的范围乱序。
最佳答案
对于 emoji,您应该使用 Utf-16 代理项对正则表达式。
utf-8/32 正则表达式太慢了。
请参阅此链接以获取 Unicode 版本 12 表情符号正则表达式和测试。
耗时3.4秒,如果超时(默认2s),就超时
在设置中。
相比之下,utf-8/32 正则表达式需要将近 40 秒(需要//u 标志)。
因此,一定要坚持使用表情符号正则表达式的代理对。
关于javascript - Unicode 正则表达式 : Compilation failed: range out of order in character class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57172819/