35

我正在使用它来检查是否有人来自 Reddit,但它不起作用。

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

也欢迎对正则表达式提出建议。

4

6 回答 6

106

试试这个:

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

正则表达式:

/^           # 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
于 2010-01-08T22:56:42.380 回答
14

关闭你的if父母...

于 2010-01-08T22:56:30.053 回答
7

我一直在使用 RegEx 的替代方法,通过在引荐来源网址中查找域

if (document.referrer.indexOf('reddit.com') >= 0) { alert('They came from Reddit.com'); }

编辑:正如 thekingoftruth 指出的那样,如果 reddit.com 包含在 URL 参数中,那将不起作用,因此我对其进行了一些扩展。正如我在上面的 RegExp 中发现的那样,我还添加了 toLowerCase() 。

if (document.referrer.indexOf('?') > 0){
    if (document.referrer.substring(0,document.referrer.indexOf('?')).toLowerCase().indexOf('reddit.com') >= 0){
    alert('They came from Reddit');
    }
} else {
    if (document.referrer.toLowerCase().indexOf('reddit.com') > 0){
            alert('They came from Reddit');
    }
}
于 2014-06-13T17:10:13.730 回答
2

试试这个:

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

或者:

ref.match(/^http:\/\/(www\.)?reddit\.com\//i)
于 2010-01-08T22:56:40.483 回答
0

我会用这个,不是更简单更简单的方法吗?

  var referral= document.refferer;
   If(referral.includes("www.reddit.com"){
  alert("you came from reddit");
   }
     else{
    alert("you didn't come from reddit");
       {
于 2020-04-30T10:58:12.500 回答
-4

使用 var ref = document.referer; // 一个 R 而不是两个

于 2014-03-15T18:18:40.990 回答