我正在使用它来检查是否有人来自 Reddit,但它不起作用。
var ref = document.referrer;
if(ref.match("/http://(www.)?reddit.com(/)?(.*)?/gi"){
alert('You came from Reddit');
} else {
alert('No you didn\'t');
}
也欢迎对正则表达式提出建议。
我正在使用它来检查是否有人来自 Reddit,但它不起作用。
var ref = document.referrer;
if(ref.match("/http://(www.)?reddit.com(/)?(.*)?/gi"){
alert('You came from Reddit');
} else {
alert('No you didn\'t');
}
也欢迎对正则表达式提出建议。
试试这个:
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
关闭你的if
父母...
我一直在使用 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');
}
}
试试这个:
ref.match(new RegExp("^http://(www\\.)?reddit\\.com/", "i"))
或者:
ref.match(/^http:\/\/(www\.)?reddit\.com\//i)
我会用这个,不是更简单更简单的方法吗?
var referral= document.refferer;
If(referral.includes("www.reddit.com"){
alert("you came from reddit");
}
else{
alert("you didn't come from reddit");
{
使用 var ref = document.referer; // 一个 R 而不是两个