gpt4 book ai didi

javascript - 任何验证磁力链接的方法(Javascript)

转载 作者:行者123 更新时间:2023-11-29 16:23:48 25 4
gpt4 key购买 nike

可能是个奇怪的问题,但我敢肯定之前有人已经想到了 :)我想知道是否有可能使用 JS 将给定字符串验证为理论上有效的磁力链接。

不是特别在意打开链接等(其他地方已经完成),我在这里更关心清除损坏/chop 的链接。

我能从头顶想到的最好的办法是 magnet:?xt=urn:

的字符串匹配的简单开头

我想我可以在前面加上一个长度条件(20 个以上的字符似乎合理?),但是有人有“更好”的解决方案吗?

最佳答案

我试过上面的正则表达式,但没有用,所以我创建了自己的正则表达式。我看着 Wikipedia Magnet URI scheme其中指出磁铁标识符是 Base32 ,这意味着:

Base32 is a base-32 transfer encoding using the twenty-six letters A-Z and six digits 2-7. [Although my understanding is that these digits and letters can be interpolated at random].

因此,我们在正则表达式中寻找以下内容:

  • 单词 magnet 后跟一个分号、一个问号和一个“xt=urn:”字符串
    • /magnet:\?xt=urn:
  • 直到下一个分号的任意数量的字符串/数字(问题的正则表达式失败了)
    • [a-z0-9]+:
  • 根据我们上面的研究,内插字母和数字的 32 个字符 (base32)
    • [a-z0-9]{32}/i

开头的/和结尾的/必须在,因为它是正则表达式,表示开始和结束,而i 末尾的 (/i) 表示不区分大小写的正则表达式。如果我们不执行 /i,我们将不得不检查 [a-zA-Z0-9]

实际有效的最终正则表达式如下:

/magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i

你可以自己试试:

var torrent = "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C";

if (torrent.match(/magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i) !== null)
{
console.log("It's valid, bloody fantastic!");
}

Obligatory JSFiddle .

关于javascript - 任何验证磁力链接的方法(Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com