我正在创建一个Steam命令,其中args是id或配置文件链接
我想做的就是硬道理


https://steamcommunity.com/id/ethicalhackeryt/在这里我想得到ethicalhackeryt或如果用户直接输入继续

.steam https://steamcommunity.com/id/ethicalhackeryt/
.steam ethicalhackeryt

将args [0]保存为ethicalhackeryt

run: async (client, message, args) => {
        if(args[0] == `http://steamcommunity.com/id/`) args[0].slice(29); //needed help in this line
        const token = steamapi
        if(!args[0]) return message.channel.send("Please provide an account name!");
        const url ....... rest of code
    }

最佳答案

您可以使用以下正则表达式提取所需的数据:/^(https:\/\/steamcommunity\.com\/id\/)?([^\s\/]+)\/?$/

基本上,此正则表达式允许URL存在(或不存在),后跟不是空格也不是“ /”的任何字符。然后最后,它允许在末尾加上“ /”。

我不知道Steam允许在其自定义URL中使用哪些字符。如果您知道,请用匹配它们的正则表达式替换[^\s\/]+

这具有额外的好处,它将拒绝不匹配的值。



const tests = [
  'https://steamcommunity.com/id/ethicalhackeryt/',
  'https://steamcommunity.com/id/ethicalhackeryt',
  'ethicalhackeryt',
  'https://google.com/images'
]

tests.forEach(test => {

  const id = test.match(/^(https:\/\/steamcommunity\.com\/id\/)?([^\s\/]+)\/?$/);

  if (id) {
    console.log(test, id[2]);
  } else {
    console.log(test, 'Not a steam id');
  }
});

关于javascript - discord.js如何切片链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59090524/

10-10 22:09