首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在删除特殊字符时不删除电报表情符号

为什么在删除特殊字符时不删除电报表情符号
EN

Stack Overflow用户
提问于 2021-10-21 21:59:57
回答 1查看 26关注 0票数 1

我有一个电报机器人,我想删除所有特殊字符,只返回数字和A-Z,但问题是我的正则表达式模式可以删除除数字以外的任何表情:1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣

我也想删除表情符号

所以这就是我的模式:

代码语言:javascript
复制
text = '1️⃣Hi =) 1.This regex removes 2️⃣all special 6️⃣characters like this !@$#%^&*()_+=~`/\><.⚠️4️⃣'

text.toUpperCase().match(/[a-z]+|\d+(?:\.\d+)?/gi)
    .map((m) => (isNaN(m) ? m : +m))

//Current output : 
// [1,'HI',1,'THIS','REGEX','REMOVES',2,'ALL', 'SPECIAL',6,'CHARACTERS', 'LIKE','THIS']


//What I want : 
// ['HI',1,'THIS','REGEX','REMOVES','ALL', 'SPECIAL','CHARACTERS', 'LIKE','THIS']

我也不知道为什么它从字符串中删除了最后一个数字表情符号!(4️⃣)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-21 22:19:16

这些数字是表情符号。要删除它们,请使用以下命令:

代码语言:javascript
复制
text = '1️⃣Hi =) 1.This regex removes 2️⃣all special 6️⃣characters like this !@$#%^&*()_+=~`/\><.⚠️4️⃣'

console.log(
  text.toUpperCase().match(/[a-z]+|(?!\d\uFE0F\u20E3)\d+(?:\.\d+)?/gi)
    .map((m) => (isNaN(m) ? m : +m))
)

当第一个数字是数字表情符号的一部分时,(?!\d\uFE0F\u20E3)负向前视将无法匹配任何\d+(?:\.\d+)?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69669224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档