I am trying to extract hash value from an magnet link but it returns undefined
var tesst = \"magnet:?xt=urn:btih:2B78EDFDDC87DC9605FB285997A80B787888C19
just mark what you want with capturing group:
/^magnet:\?xt=urn:btih:([a-z\d]{40})\&$/im
Also I recomend to not use regexp here.
Try followed:
tesst.split(':')[3].slice(0, -1);
slice(0, -1)
used for remove last '&', you can use any other method, like slice(0, 40)
, replace(/[^\w]/g, '')
or any other.
var test = tesst.match(/magnet:\?xt=urn:btih:([a-z\d]{40})\&/im);
You forgot the ( ) around the hash part.
You need to include [a-z\d]{40}
part inside a capturing group and you don't need to escape &
symbol, because it isn't a regex meta character.
> var test = tesst.match(/magnet:\?xt=urn:btih:([a-z\d]{40})&/im);
undefined
> console.log(test[1])
2B78EDFDDC87DC9605FB285997A80B787888C194
You can use this regex
/([^:]+)&$/
and use test[1]
console.log(str.match(/([^:]+)&$/)[1]);