javascriptreferrer

Checking the referrer


I'm using this to check if someone came from Reddit, however it doesn't work.

var ref = document.referrer;
if(ref.match("/http://(www.)?reddit.com(/)?(.*)?/gi"){
    alert('You came from Reddit');
} else {
    alert('No you didn\'t');
}

Suggestions on the regular expression are most welcome too.


Solution

  • Try this:

    if (ref.match(/^https?:\/\/([^\/]+\.)?reddit\.com(\/|$)/i)) {
      alert("Came from reddit");
    }
    

    The regexp:

    /^           # ensure start of string
     http        # match 'http'
     s?          # 's' if it exists is okay
     :\/\/       # match '://'
     ([^\/]+\.)? # match any non '/' chars followed by a '.' (if they exist)
     reddit\.com # match 'reddit.com'
     (\/|$)      # match '/' or the end of the string
    /i           # match case-insenitive