我正在创建一个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/