js怎样获取搜索引擎搜索关键词?

JavaScript015

js怎样获取搜索引擎搜索关键词?,第1张

js获取搜索引擎搜索关键词有两种方法可以实现:

第一种方法:

var str1="" 

var str2= "" 

var refer=document.referrer 

var sosuo=refer.split(".")[1] 

var grep=null 

var str=null 

var keyword=null 

var skey="xx" 

var ykey="" 

switch(sosuo){ 

  case "baidu": 

    grep=/wd\=.*\&/i 

    str=refer.match(grep) 

    keyword=str.toString().split("=")[1].split("&")[0] 

    //console.log(decodeURIComponent(keyword)) 

 ykey=decodeURIComponent(keyword) 

    addCookie('key',decodeURIComponent(keyword),1) 

 //alert(decodeURIComponent(keyword)) 

  break 

  case "google": 

    grep=/&q\=.*\&/i 

    str=refer.match(grep) 

    keyword=str.toString().split("&")[1].split("=")[1] 

    //console.log(decodeURIComponent(keyword)) 

 ykey=decodeURIComponent(keyword) 

    addCookie('key',decodeURIComponent(keyword),1) 

  break 

  case "sogou": 

    grep=/query\=.*\&/i 

    str=refer.match(grep) 

    keyword=str.toString().split("&")[1].split("&")[2] 

    //console.log(decodeURIComponent(keyword)) 

 ykey=decodeURIComponent(keyword) 

    addCookie('key',decodeURIComponent(keyword),1) 

 //alert(decodeURIComponent(keyword)) 

  break 

  default: 

  addCookie('key','',1) 

var ckey=(getCookie('key')) 

//alert(ckey) 

if(ykey.indexOf(skey)>-1) 

}else 

function deleteCookie(name){ 

var date=new Date() 

date.setTime(date.getTime()-10000) 

document.cookie=name+"=v expires="+date.toGMTString() 

function getCookie(name){ 

var strCookie=document.cookie 

var arrCookie=strCookie.split(" ") 

for(var i=0i < arrCookie.lengthi++){ 

var arr=arrCookie[i].split("=") 

if(arr[0]==name)return arr[1] 

return "" 

function addCookie(name,value,expiresHours){ 

var cookieString=name+"="+escape(value) 

//判断是否设置过期时间 

if(expiresHours>0){ 

var date=new Date() 

date.setTime(date.getTime+expiresHours*3600*1000) 

cookieString=cookieString+" expires="+date.toGMTString() 

document.cookie=cookieString 

document.write(ykey) 

if(ykey=="") 

{} 

else 

 document.write("") 

}

第二种方法:

function getDomainQuery(url) {   

    var d = []   

    var st = url.indexOf('//', 1)   

    var _domain = url.substring(st + 1, url.length)   

    var et = _domain.indexOf('/', 1)   

    d.push(_domain.substring(1, et))   

    d.push(_domain.substring(et + 1, url.length))   

    return d   

}   

function route() {   

    var eg = []   

    eg.push(['baidu', 'wd'])   

    eg.push(['google', 'q'])   

    eg.push(['soso', 'w'])   

    eg.push(['yodao', 'q'])   

    eg.push(['bing', 'q'])   

    eg.push(['yahoo', 'q'])   

    eg.push(['sogou', 'query'])   

    eg.push(['gougou', 'search'])   

    eg.push(['360', 'q'])   

    var dq = getDomainQuery(document.referrer)   

    var keyword=null   

    var grep=null   

    var str=null   

    for(var el in eg){   

        var s = eg[el]   

        var DandQ=String(s).split(",") //字符分割   

        if (dq[0].indexOf(DandQ[0])>0){   

            eval("grep=/"+DandQ[1]+"\=.*\&/i")   

            str = dq[1].match(grep)   

            keyword = str.toString().split("=")[1].split("&")[0]   

            keyword = decodeURIComponent(keyword)   

            alert(keyword)   

            return false   

        }   

    }   

}   

route()

/^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g

开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-。然后是点“.”和单词字符和-的组合,可以有一个或者多个组合。

代码如下:

<script type="text/javascript"> 

function isEmail(str){ 

var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ 

return reg.test(str) 

var str = 'test@hotmail.com' 

document.write(isEmail(str)+'<br />') 

var str2 = 'test@sima.vip.com' 

document.write(isEmail(str2)+'<br />') 

var str3 = 'te-st@qq.com.cn' 

document.write(isEmail(str3)+'<br />') 

var str4 = 'te_st@sima.vip.com' 

document.write(isEmail(str4)+'<br />') 

var str5 = 'te.._st@sima.vip.com' 

document.write(isEmail(str5)+'<br />') 

</script>

扩展资料:

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

参考资料:正则表达式百度百科

第一种:如果不考虑IE8的兼容性完全可以使用Foreach ,此方法求出arr1 减去 arr2的差集,

arr1 = [1,2,3,4]

arr2 = [1,2,3]  

  var subSet = function (arr1, arr2) {

        var set2 = new Set(arr2)

        var subset = []

        arr1.forEach(function(val, index) {

            if (!set2.has(val)) {

                subset.push(val)

            }

        })

        return subset

    }

//结果等于4

第二种是使用JQuery 的merge和grep的配合使用求差集,兼容IE8 、chrome等主流游览器

var alpha = [1, 2, 3, 4],

beta = [1,2,3]

$.arrayIntersect = function(a, b)

{

return $.merge($.grep(a, function(i)

{

return $.inArray(i, b) == -1

}) , $.grep(b, function(i)

{

return $.inArray(i, a) == -1

})

)

}

window.console && console.log( $.arrayIntersect(alpha, beta) )

//结果等于4

第三种使用ES6 的set 方法类似与foreach方法

var subSet = function(arr1, arr2) {

    var set1 = new Set(arr1)

    var set2 = new Set(arr2)

    var subset = []

    for (let item of set1) {

        if (!set2.has(item)) {

            subset.push(item)

        }

    }

    return subset

}