首页 > 解决方案 > 删除两个字符正则表达式之间的所有空格

问题描述

我有一个翻译机器人,最近我对其进行了修改以允许自定义表情符号(翻译者会在任何地方添加空格并将表情符号名称翻译为不受支持的格式)

我现在的问题是它并不总是按需要运行,我想添加一个“过滤器”来删除所有自定义表情符号和表情符号的任何空格,以删除我的正则表达式语句中可能遗漏的任何空格。没有被触发。

目前代码的工作方式如下:

正则表达式编辑器可以在这里找到

const regex = /<([:+\s:\s*[a-z0-9ЁёА-я_\s]+:\s*)([0-9\s]+)>/gmi;
const str = "<: Gelb: 590653333124022288><:Gelb: 590653333124022288><: Gelb: 590653333124022288> <: Gelb: 590653333124022288><: Gelb: 590653333124022288><: Gelb: 590653333124022288> <: Gelb: 590653333124022288> <: Gelb: 590653333124022288><: gelb : 590653333124022288> <: Gelb: 590653333124022288> <: Gelb: 590653333124022288><: Gelb: 590653333124022288> <: Rot  : 538473333124022288> <: Gelb: 590653333124022288>"
const subst = `<:okthisisanemoji:$2>`;

console.log(str.replace(regex, subst));

(编辑,我将所有表情符号名称更改为 :okthisisanemoji: 的原因是这样我就不必处理不和谐无法发送的翻译表情符号名称,例如不和谐无法发送带有俄语字母的表情符号)

有人可以帮我修改/创建一个新的正则表达式语句,它会删除字符“<”和“>”之间的所有空格吗?

抱歉,如果上述解释具有误导性,让我澄清一下。删除“<”和“>”之间的所有空格,但保留字符串的其余部分,否则全局删除“<”和“>”。

我曾尝试在网上寻求帮助,但也不和谐,但没有 javascript 或正则表达式可以做到这一点。我曾尝试在正则表达式中这样做,但由于我不经常使用正则表达式而失败了。

源代码现在在这里: https ://github.com/Zyc0r3/RitaBot/tree/test-branch src/core/send.js 有上面的代码。

标签: javascriptnode.jsregexdiscorddiscord.js

解决方案


如果您不坚持只通过一个正则表达式解决您的问题,下面是一个使用两个的解决方案:第一个选择 and 之间的标签<:>第二个在回调函数中替换第二个中的所有空格。

const input = `<: Gelb: 590653333124022288>
<:Gelb: 590653333124022288>
<: Gelb: 590653333124022288> 
<: Gelb: 590653333124022288>
<: Gelb: 590653333124022288>
<: Gelb: 590653333124022288> 
<: Gelb: 590653333124022288> 
<: Gelb: 590653333124022288>
<: gelb : 590653333124022288> 
<: Gelb: 590653333124022288> 
<: Gelb: 590653333124022288>
<: Gelb: 590653333124022288> 
<: Rot  : 538473333124022288> 
<: Gelb: 590653333124022288>"`;

console.log(input.replace(/<:.+?>/g, tag => tag.replace(/\s+/g, '')));


推荐阅读