【发布时间】:2021-01-01 23:36:53
【问题描述】:
这是我在 Stack Overflow 上的第一个问题,希望能得到帮助。
我使用正则表达式从用户输入的文本中检测表情符号。我用来匹配表情符号的正则表达式是:
(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])
但是,仅在移动设备上,它还匹配各种非表情符号,包括 ' 和 "
我已经尝试过其他正则表达式来匹配表情符号,但没有一个比这个更简洁或同样有效。
谁能帮帮我?
要实时查看问题,请将文本/表情符号/符号插入个人消息字段(使用移动设备):https://2050.cards/shop/birthday/eskimo-surprise/
示例输入:
不应该和不匹配:
Dear you, Happy Birthday.
应该匹配并且确实匹配:
Dear you ????, Thanks. ????
不应该但确实匹配(仅在移动设备上):
Dear you, let's all "hang out"
【问题讨论】:
-
你能给出一些示例输入吗?您是匹配文本还是单个字符?
-
@simbabque 我们创建了电子贺卡,这是用户输入的信息,所以我们正在匹配文本。最多 125 个字符。例如:亲爱的XXX,生日快乐,来自YYY。我们无法创建带有表情符号的卡片,因此如果用户插入表情符号,请禁用“订购卡片”按钮。但是,目前如果用户在移动设备上订购卡并插入“•”或€,则该按钮将被禁用。
-
我修复了您的帖子格式,但我认为您的示例中缺少欧元符号。我希望我没有破坏它。
-
您的正则表达式似乎与 \u2019 等智能引号匹配。也许移动设备正在添加它们。
-
@BenjyB 如果您的环境支持,我喜欢 Steven Penny 的回答。
标签: javascript regex unicode emoji