Thursday, April 2, 2009

Javascript get domain name from URL or email

I've made a simple script that will retrieve the domain name of a given site url or an email.


function getDomainName(urlOrEmail)
{
var matches = urlOrEmail.match(/^([\w]+:\/{0,2})?([\w]+\.|.*@)?([\w]+\.[\w]{2,4})(\/?)(.*)?/);

return matches && matches[3] ;


}


Sample usage:

//any format such as images.photosnippet.com, www.photosnippet.com, etc
var site = "http://www.photosnippet.com";
var email = "me@photosnippet.com";

document.write(getDomainName(site)); => prints "photosnippet.com"
document.write(getDomainName(email)); => prints "photosnippet.com"

NOTE: Thist post has been updated. Thanks to "gwafo ko" comments, I was able to know more regex syntax such as "\w" and "String.match()". (obviously this was my first regex code. hehe ;) ).

I used this site as reference: http://www.regular-expressions.info/reference.html

What the script above does is that it will only retrieve the domain name, excluding subdomains. Here are the different scenarios that this script was intended for:

1. me@markglibres.com
2. my.projects@markglibres.com
3. mailto::me@markglibres.com
4. markglibres.com
5. www.markglibres.com
6. projects.markglibres.com
7. http://markglibres.com
8. http://projects.markglibres.com

This also has a strict rule of only having valid domain extensions such as ".com" or ".us" or ".info" (characters not greater than 4 characters)

This will return "markglibres.com"

1 comment:

  1. function getDomain(url){
    var m = url.match(/^(http:\/\/|mailto: )?([\w\-]+(\:[\w\-]+)?@)?([\w\.\-]+[^\.\?\#])/);
    return m && m[4];
    }
    why make it long when you have this

    ReplyDelete