views:

74

answers:

3

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 ;)

+6  A: 

Close your if paren...

Skilldrick
Doh, it's always the stuff that makes me look really stupid.
Ben Shelock
:) Everybody makes mistakes like that. Use something that'll give you errors (like Firebug), because staring at a silently failing JavaScript page is a PITA.
Skilldrick
+1  A: 

Try this:

ref.match(new RegExp("^http://(www\\.)?reddit\\.com/", "i"))

Or:

ref.match(/^http:\/\/(www\.)?reddit\.com\//i)
Gumbo
+5  A: 

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
gnarf