我正在尝试从磁力链接中提取哈希值,但它返回 undefined
var tesst = "magnet:?xt=urn:btih:2B78EDFDDC87DC9605FB285997A80B787888C194&"
var test = tesst.match(/magnet:\?xt=urn:btih:[a-z\d]{40}\&/im);
alert (test[1]);
我无法理解我做错了什么。
答案 0 :(得分:1)
var test = tesst.match(/magnet:\?xt=urn:btih:([a-z\d]{40})\&/im);
你忘记了散列部分周围的()。
答案 1 :(得分:0)
只需使用捕获组标记您想要的内容:
/^magnet:\?xt=urn:btih:([a-z\d]{40})\&$/im
此外,我建议不要在这里使用正则表达式 尝试遵循:
tesst.split(':')[3].slice(0, -1);
slice(0, -1)
用于删除上一个'&',您可以使用任何其他方法,例如slice(0, 40)
,replace(/[^\w]/g, '')
或任何其他方法。
答案 2 :(得分:0)
您需要在捕获组中包含[a-z\d]{40}
部分,并且您不需要转义&
符号,因为它不是正则表达式元字符。
> var test = tesst.match(/magnet:\?xt=urn:btih:([a-z\d]{40})&/im);
undefined
> console.log(test[1])
2B78EDFDDC87DC9605FB285997A80B787888C194
答案 3 :(得分:0)
您可以使用此正则表达式
/([^:]+)&$/
并使用test[1]
console.log(str.match(/([^:]+)&$/)[1]);