调用: QueryString('name')
返回: null
网址: http://1.com/?name=cwj&age=21
调用: QueryString('name')
返回: cwj
现在随便拿一个网址: https://m.weibo.cn/u/5902368392?topnav=1&wvr=6&is_all=1&jumpfrom=weibocom ,这个网址的 location 是:
所以这个地址的 location.search 是 ?topnav=1&wvr=6&is_all=1&jumpfrom=weibocom ,这就是需要执行匹配的字符串
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
存放匹配结果的数组。在这个方法中将匹配结果放在了数组 sValue 中。
RegExp 对象表示正则表达式
该对象接受两个参数,第一个参数是一个字符串,指定了正则表达式的模式或其他正则表达式。第二个参数 i 代表着区分大小写的匹配。
调用该方法: QueryString('wvr') ,根据以上正则表达式匹配出来的结果是:
要注意的是 match 方法返回的数组 0 位置是匹配的字符串,所以相应参数在 sValue[1] 中
在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结。 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=11、window.location.href(设置或获取整个 URL 为字符串)var test = window.location.href alert(test) 返回:http://i.cnblogs.com/EditPosts.aspx?opt=12、window.location.protocol(设置或获取 URL 的协议部分)var test = window.location.protocol alert(test) 返回:http:3、window.location.host(设置或获取 URL 的主机部分)var test = window.location.host alert(test) 返回:i.cnblogs.com4、window.location.port(设置或获取与 URL 关联的端口号码)var test = window.location.port alert(test) 返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)5、window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))var test = window.location.pathname alert(test) 返回:/EditPosts.aspx6、window.location.search(设置或获取 href 属性中跟在问号后面的部分)var test = window.location.search alert(test) 返回:?opt=1 PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。7、window.location.hash(设置或获取 href 属性中在井号“#”后面的分段)var test = window.location.hash alert(test) 返回:空字符(因为url中没有)8、js获取url中的参数值 一、正则法 function getQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i') var r = window.location.search.substr(1).match(reg) if (r != null) { return unescape(r[2]) } return null}// 这样调用:alert(GetQueryString("参数名1")) alert(GetQueryString("参数名2")) alert(GetQueryString("参数名3"))二、split拆分法 function GetRequest() { var url = location.search//获取url中"?"符后的字串 var theRequest = new Object() if (url.indexOf("?") != -1) { var str = url.substr(1) strs = str.split("&") for(var i = 0i <strs.lengthi ++) { theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]) } } return theRequest } var Request = new Object() Request = GetRequest()<br>// var id=Request["id"] // var 参数1,参数2,参数3,参数N // 参数1 = Request['参数1'] // 参数2 = Request['参数2'] // 参数3 = Request['参数3'] // 参数N = Request['参数N']三、指定取比如说一个url:http://i.cnblogs.com/?j=js,我们想得到参数j的值,可以通过以下函数调用。function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") var r = window.location.search.substr(1).match(reg)//获取url中"?"符后的字符串并正则匹配 var context = "" if (r != null) context = r[2] reg = null r = null return context == null || context == "" || context == "undefined" ? "" : context } alert(GetQueryString("j"))四、单个参数的获取方法 function GetRequest() { var url = location.search//获取url中"?"符后的字串 if (url.indexOf("?") != -1) { //判断是否有参数 var str = url.substr(1)//从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串 strs = str.split("=") //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 要用&号分隔 再用等号进行分隔) alert(strs[1]) //直接弹出第一个参数 (如果有多个参数 还要进行循环的) } }一、正则法functiongetQueryString(name) { varreg = newRegExp('(^|&)'+ name + '=([^&]*)(&|$)', 'i') varr = window.location.search.substr(1).match(reg) if(r != null) { returnunescape(r[2]) } returnnull } // 这样调用: alert(GetQueryString("参数名1"))alert(GetQueryString("参数名2"))alert(GetQueryString("参数名3")) 二、split拆分法functionGetRequest() { varurl = location.search//获取url中"?"符后的字串 vartheRequest = newObject() if(url.indexOf("?") != -1) { varstr = url.substr(1) strs = str.split("&") for(vari = 0i <strs.lengthi ++) { theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]) } } returntheRequest } varRequest = newObject() Request = GetRequest()<br>// var id=Request["id"] // var 参数1,参数2,参数3,参数N // 参数1 = Request['参数1'] // 参数2 = Request['参数2'] // 参数3 = Request['参数3'] // 参数N = Request['参数N'] 三、指定取比如说一个url:http://i.cnblogs.com/?j=js,我们想得到参数j的值,可以通过以下函数调用。 functionGetQueryString(name) { varreg = newRegExp("(^|&)"+ name + "=([^&]*)(&|$)", "i") varr = window.location.search.substr(1).match(reg)//获取url中"?"符后的字符串并正则匹配 varcontext = "" if(r != null) context = r[2] reg = null r = null returncontext == null|| context == ""|| context == "undefined"? "": context } alert(GetQueryString("j")) 四、单个参数的获取方法functionGetRequest() { varurl = location.search//获取url中"?"符后的字串 if(url.indexOf("?") != -1) { //判断是否有参数 varstr = url.substr(1)//从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串 strs = str.split("=") //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 要用&号分隔 再用等号进行分隔) alert(strs[1]) //直接弹出第一个参数 (如果有多个参数 还要进行循环的) } }推荐你使用一个专门处理这种情况的jquery插件,目前网上已经很难下载到,我就把源码贴这里,你自己保存到一个js中,然后在页面中引用该js。使用方法在注释中,本人亲自使用过,才会在这里给你回答。请采纳。/**
//例如 当前你的URL是:
//http://www.jb51.net/index.php?test=1&kk=2
//
//如果想获取test,则可以引入插件后,
//用如下方法获取:
//var test = $.query.get('test')
//
//如果参数有多个相同的名称 ,则可以这样:
//var arr = $.query.get('testy')
//输出: [ 值1 , 值2, 值3...]
//
//如果要获取多个相同名称中的某一个,可以这样:
//var arrayElement = $.query.get('testy[1]')
//
//此插件不仅能获取参数,也能设置参数。
//
//设置一个参数:
//var newUrl = $.query.set("section", 5).toString()
//输出 : "?section=5"
//
//设置两个参数:
//var newUrl = $.query.set("section", 5).set("action", "do").toString()
//输出 : "?action=do§ion=5"
//
//
//删除一个参数:
//var oldQueryAgain = $.query.REMOVE("type")
//
//清空所有参数:
//var emptyQuery = $.query.empty()
//
//复制所有参数:
//var stillTheSame = $.query.copy()
new function(settings) {
// Various Settings
var $separator = settings.separator || '&'
var $spaces = settings.spaces === false ? false : true
var $suffix = settings.suffix === false ? '' : '[]'
var $prefix = settings.prefix === false ? false : true
var $hash = $prefix ? settings.hash === true ? "#" : "?" : ""
var $numbers = settings.numbers === false ? false : true
jQuery.query = new function() {
var is = function(o, t) {
return o != undefined &&o !== null &&(!!t ? o.constructor == t : true)
}
var parse = function(path) {
var m, rx = /\[([^[]*)\]/g , match = /^([^[]+)(\[.*\])?$/ .exec(path), base = match[1], tokens = []
while (m = rx.exec(match[2])) tokens.push(m[1])
return [base, tokens]
}
var set = function(target, tokens, value) {
var o, token = tokens.shift()
if (typeof target != 'object') target = null
if (token === "") {
if (!target) target = []
if (is(target, Array)) {
target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value))
} else if (is(target, Object)) {
var i = 0
while (target[i++] != null)
target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value)
} else {
target = []
target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value))
}
} else if (token &&token.match( /^\s*[0-9]+\s*$/ )) {
var index = parseInt(token, 10)
if (!target) target = []
target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value)
} else if (token) {
var index = token.replace( /^\s*|\s*$/g , "")
if (!target) target = { }
if (is(target, Array)) {
var temp = { }
for (var i = 0i <target.length++i) {
temp[i] = target[i]
}
target = temp
}
target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value)
} else {
return value
}
return target
}
var queryObject = function(a) {
var self = this
self.keys = { }
if (a.queryObject) {
jQuery.each(a.get(), function(key, val) {
self.SET(key, val)
})
} else {
jQuery.each(arguments, function() {
var q = "" + this
q = q.replace( /^[?#]/ , '')// remove any leading ? || #
q = q.replace( /[&]$/ , '')// remove any trailing &||
if ($spaces) q = q.replace( /[+]/g , ' ')// replace +'s with spaces
jQuery.each(q.split( /[&]/ ), function() {
var key = decodeURIComponent(this.split('=')[0] || "")
var val = decodeURIComponent(this.split('=')[1] || "")
if (!key) return
if ($numbers) {
if ( /^[+-]?[0-9]+\.[0-9]*$/ .test(val)) // simple float regex
val = parseFloat(val)
else if ( /^[+-]?[0-9]+$/ .test(val)) // simple int regex
val = parseInt(val, 10)
}
val = (!val &&val !== 0) ? true : val
if (val !== false &&val !== true &&typeof val != 'number')
val = val
self.SET(key, val)
})
})
}
return self
}
queryObject.prototype = {
queryObject: true,
has: function(key, type) {
var value = this.get(key)
return is(value, type)
},
GET: function(key) {
if (!is(key)) return this.keys
var parsed = parse(key), base = parsed[0], tokens = parsed[1]
var target = this.keys[base]
while (target != null &&tokens.length != 0) {
target = target[tokens.shift()]
}
return typeof target == 'number' ? target : target || ""
},
get: function(key) {
var target = this.GET(key)
if (is(target, Object))
return jQuery.extend(true, { }, target)
else if (is(target, Array))
return target.slice(0)
return target
},
SET: function(key, val) {
var value = !is(val) ? null : val
var parsed = parse(key), base = parsed[0], tokens = parsed[1]
var target = this.keys[base]
this.keys[base] = set(target, tokens.slice(0), value)
return this
},
set: function(key, val) {
return this.copy().SET(key, val)
},
REMOVE: function(key) {
return this.SET(key, null).COMPACT()
},
remove: function(key) {
return this.copy().REMOVE(key)
},
EMPTY: function() {
var self = this
jQuery.each(self.keys, function(key, value) {
delete self.keys[key]
})
return self
},
load: function(url) {
var hash = url.replace( /^.*?[#](.+?)(?:\?.+)?$/ , "$1")
var search = url.replace( /^.*?[?](.+?)(?:#.+)?$/ , "$1")
return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash)
},
empty: function() {
return this.copy().EMPTY()
},
copy: function() {
return new queryObject(this)
},
COMPACT: function() {
function build(orig) {
var obj = typeof orig == "object" ? is(orig, Array) ? [] : { } : orig
if (typeof orig == 'object') {
function add(o, key, value) {
if (is(o, Array))
o.push(value)
else
o[key] = value
}
jQuery.each(orig, function(key, value) {
if (!is(value)) return true
add(obj, key, build(value))
})
}
return obj
}
this.keys = build(this.keys)
return this
},
compact: function() {
return this.copy().COMPACT()
},
toString: function() {
var i = 0, queryString = [], chunks = [], self = this
var encode = function(str) {
str = str + ""
if ($spaces) str = str.replace( / /g , "+")
return encodeURIComponent(str)
}
var addFields = function(arr, key, value) {
if (!is(value) || value === false) return
var o = [encode(key)]
if (value !== true) {
o.push("=")
o.push(encode(value))
}
arr.push(o.join(""))
}
var build = function(obj, base) {
var newKey = function(key) {
return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join("")
}
jQuery.each(obj, function(key, value) {
if (typeof value == 'object')
build(value, newKey(key))
else
addFields(chunks, newKey(key), value)
})
}
build(this.keys)
if (chunks.length >0) queryString.push($hash)
queryString.push(chunks.join($separator))
return queryString.join("")
}
}
return new queryObject(location.search, location.hash)
}
}(jQuery.query || { }) // Pass in jQuery.query as settings object