Saturday, 21 January 2017

javascript - How to parse a URL?



If there is one thing I just cant get my head around, it's regex.



So after a lot of searching I finally found this one that suits my needs:



function get_domain_name()
{
aaaa="http://www.somesite.se/blah/sdgsdgsdgs";
//aaaa="http://somesite.se/blah/sese";
domain_name_parts = aaaa.match(/:\/\/(.[^/]+)/)[1].split('.');
if(domain_name_parts.length >= 3){
domain_name_parts[0] = '';
}
var domain = domain_name_parts.join('.');
if(domain.indexOf('.') == 0)
alert("1"+ domain.substr(1));
else
alert("2"+ domain);
}


It basically gives me back the domain name, is there anyway I can also get all the stuff after the domain name? in this case it would be /blah/sdgsdgsdgs from the aaaa variable.


Answer



Please note that this solution is not the best. I made this just to match the requirements of the OP. I personally would suggest looking into the other answers.



THe following regexp will give you back the domain and the rest. :\/\/(.[^\/]+)(.*):




  1. www.google.com

  2. /goosomething



I suggest you studying the RegExp documentation here: http://www.regular-expressions.info/reference.html



Using your function:



function get_domain_name()
{
aaaa="http://www.somesite.se/blah/sdgsdgsdgs";
//aaaa="http://somesite.se/blah/sese";
var matches = aaaa.match(/:\/\/(?:www\.)?(.[^/]+)(.*)/);
alert(matches[1]);
alert(matches[2]);
}

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...