You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则匹配仅含单个或多个emoji的纯emoji字符串?

正则表达式:匹配纯Emoji字符串

需要编写正则表达式,仅匹配完全由一个或多个Emoji组成、不含任何其他字符的字符串。此前相关方案无法支持全部Emoji,目前使用以下代码检测Emoji,但不知如何排除其他字符:

const regex = /\p{Extended_Pictographic}/ug;
return regex.test(mystr);

测试用例及预期结果

  • 不符合(预期返回false):
    • 🌺🌸d🌸👩🏼‍❤️‍💋‍👩🏽f
    • t
    • 3
  • 符合(预期返回true):
    • 🌺🌸🌸👩🏼
    • ❤️
    • 💋
    • 👳‍♂️
    • 🏖
    • 🖍

解决方案

要实现“完全匹配纯Emoji字符串”,需给正则加上字符串首尾锚定符,同时覆盖Emoji的组合特性(比如肤色修饰符、ZWJ连接符、变体选择符组成的复合序列)。修改后的正则如下:

const regex = /^[\p{Extended_Pictographic}\p{Emoji_Modifier}\p{Emoji_Component}\u200D\uFE0F]+$/u;
return regex.test(mystr);

正则规则说明

  • ^ 和 $:锚定字符串首尾,确保整个内容都符合匹配规则,彻底排除含非Emoji字符的情况。
  • \p{Extended_Pictographic}:匹配所有Unicode扩展象形字符,覆盖绝大多数基础Emoji。
  • \p{Emoji_Modifier}:匹配Emoji肤色修饰符(如👩🏼中的🏼)。
  • \p{Emoji_Component}:匹配Emoji组件字符(部分复合Emoji的组成部件)。
  • \u200D:匹配零宽连接符ZWJ,支持由多个Emoji连接而成的复合序列(如👩🏼‍❤️‍💋‍👩🏽)。
  • \uFE0F:匹配变体选择符,支持将普通字符转换为Emoji样式(如❤️中的FE0F)。
  • +:确保字符串至少包含一个Emoji序列。

内容的提问来源于stack exchange,提问作者Vahid Amiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:41:03