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
}