javascriptjqueryregex

Extract hostname name from string


I would like to match just the root of a URL and not the whole URL from a text string. Given:

http://www.youtube.com/watch?v=ClkQA2Lb_iE
http://youtu.be/ClkQA2Lb_iE
http://www.example.com/12xy45
http://example.com/random

I want to get the 2 last instances resolving to the www.example.com or example.com domain.

I heard regex is slow and this would be my second regex expression on the page so If there is anyway to do it without regex let me know.

I'm seeking a JS/jQuery version of this solution.


Solution

  • There is no need to parse the string, just pass your URL as an argument to URL constructor:

    const url = 'http://www.youtube.com/watch?v=ClkQA2Lb_iE';
    const { hostname } = new URL(url);
    
    console.assert(hostname === 'www.youtube.com');