使用 Regex 通过 Discord.js 定义变量?

Posted

技术标签:

【中文标题】使用 Regex 通过 Discord.js 定义变量?【英文标题】:Using Regex to define variables with Discord.js? 【发布时间】:2021-04-29 15:10:59 【问题描述】:

有人建议我在这个 discord.js 项目中使用正则表达式。它将消息中的两个提及项按照键入两个提及项的顺序保存到两个变量中。 Discord.js 以实际 ID 的数字顺序读取提及,而不是实际键入的顺序,因此我们必须使用正则表达式。命令字符串为:f$command @user1 @user2 所以,这是我的代码:

else if (command === 'command')
        const regex = /<@!?(\d+)>/;
        let match = regex.exec(message);
        while (match)
            const User1 = match[1].id;
            const User2 = match[2].id;
        

这是正确的吗?如何让它需要 2 个正则表达式匹配?

【问题讨论】:

什么是 tge message 字符串?请注意,您将 const User1User2 贴在 while 块中,因此它们最终会“生活”在该范围内。 【参考方案1】:
else if (command === 'command') 
    const regex = /<@!?(\d+)>/;
    let match = regex.exec(message);
    const result = [];
    while (match)
        result.push(match[1]);
        match = regex.exec(message);
    
    if (result.length !== 2) 
        console.error('not 2 matches');
    
    const User1 = result[0];
    const User2 = result[1];

【讨论】:

以上是关于使用 Regex 通过 Discord.js 定义变量?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Discord.js 跨渠道发送消息会产生“未定义”错误

使用参数 Discord.JS 按名称将用户添加到角色

discord.js无法读取未定义的属性'get'(client.channels.get())

使用 Node.js、Mongoose 和 Discord.js 的未定义错误 [无法读取未定义的属性]

Discord.js 变量在定义时不存在?

discord.js:JSON 星球属性未定义