作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
可能是个奇怪的问题,但我敢肯定之前有人已经想到了 :)我想知道是否有可能使用 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:
[a-z0-9]+:
[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!");
}
关于javascript - 任何验证磁力链接的方法(Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227280/
我是一名优秀的程序员,十分优秀!