正则表达式检查引荐来源网址字符串

时间:2018-10-14 06:48:31

标签: javascript jquery regex indexof

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中都有“框”。来自另一个类别的特定项目需要能够检查用户是否来自“盒子”项目。 (这是一个临时解决方案,因为我只有皮肤级别的访问权限。)

登录'check'时,我得到'/ boxes / gi',当在indexOf中进行检查时,它应该是有效的正则表达式字符串。

我不太确定为什么我不能对此进行正确检查,因为结果只能是用户并非来自“框”部分。

我有很多东西要学习,所以在此之前,我非常感谢您的帮助。

谢谢!

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

orig.toLowerCase().indexOf("box") > -1

// or

orig.search(check) > -1

答案 2 :(得分:0)

您可以将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>

答案 3 :(得分:0)

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

var url = document.createElement('a');
url.href = document.referrer;

var comingFromBoxes = url.hostname === 'yoursite.com' && url.pathname.indexOf('/boxes') === 0;

注意:引荐来源无论如何都不是一个可靠的值,因此不应被视为