Regex returns string undefined

前端 未结 4 1147
死守一世寂寞
死守一世寂寞 2021-01-29 13:23

I am trying to extract hash value from an magnet link but it returns undefined

var tesst = \"magnet:?xt=urn:btih:2B78EDFDDC87DC9605FB285997A80B787888C19         


        
相关标签:
4条回答
  • 2021-01-29 14:08

    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.

    0 讨论(0)
  • 2021-01-29 14:18
    var test = tesst.match(/magnet:\?xt=urn:btih:([a-z\d]{40})\&/im);
    

    You forgot the ( ) around the hash part.

    0 讨论(0)
  • 2021-01-29 14:18

    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
    
    0 讨论(0)
  • 2021-01-29 14:18

    You can use this regex

    /([^:]+)&$/
    

    and use test[1]

    console.log(str.match(/([^:]+)&$/)[1]);
    
    0 讨论(0)
提交回复
热议问题