【问题标题】:Regex check against referrer URL string正则表达式检查引荐来源网址字符串
【发布时间】:2019-03-18 21:44:03
【问题描述】:
var orig = document.referrer; // Incoming URL
var check = new RegExp("boxes", "gi"); // Literal string, global + case insensitive.

// console.log(check);

if (orig.indexOf(check) > -1) {
    console.log('you came from the box section');
} else {
    console.log('you DIDNT come the box section');
}

大家好,

我在网站上有一个“盒子”类别,其中所有盒子项目的 URL 中都有“盒子”。来自另一个类别的特定项目需要能够检查用户是否来自“盒子”项目。 (这是一个临时解决方案,因为我只有皮肤级别的访问权限)。

当记录“检查”时,我得到“/boxes/gi”,它在 indexOf 中检查时应该可以工作,作为一个有效的正则表达式字符串。

我不太清楚为什么我不能正确检查这个,因为结果只是用户不是来自“盒子”部分。

我有很多东西要学,所以提前,我非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: javascript jquery regex indexof


    【解决方案1】:

    你可以使用字符串变量代替正则表达式

    var orig = document.referrer; // Incoming URL
    
    // console.log(check);
    
    if (orig.indexOf("boxes") > -1) {
        console.log('you came from the box section');
    } else {
        console.log('you DIDNT come the box section');
    }
    

    【讨论】:

      【解决方案2】:

      indexOf 不接受正则表达式作为参数。您可以将正则表达式与search 一起使用,或者将indexOf 与字符串一起使用。

      orig.toLowerCase().indexOf("box") > -1
      
      // or
      
      orig.search(check) > -1
      

      【讨论】:

        【解决方案3】:

        您可以将引荐来源网址解析为链接元素并检索其路径名。您还应该检查主机名以确保它来自您自己的网站:

        var url = document.createElement('a');
        url.href = document.referrer;
        
        var comingFromBoxes = url.hostname === 'yoursite.com' && url.pathname.indexOf('/boxes') === 0;
        

        注意:推荐人在任何方面都不是可靠的值,不应被视为可靠值。

        【讨论】:

          【解决方案4】:

          您可以使用match()regex 来执行您的逻辑。

          $(document).ready(function(){
          var url = "www.someurl.com/boxes/gi/abc";
          var regex = /\/boxes\/gi/g;
          var mtch =  url.match(regex);
          if(mtch !== null){
            alert('url has the value');
          }
          else{
            alert('url does not have the value');
          }
          
          })
          <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

          【讨论】:

            猜你喜欢
            • 2018-11-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多