假设我们有这样的网址
http://localhost:8080/dev.html?organization=test&location=pr&lang=fr
我想创建一个仅使用organization = test的正则表达式,以便将其存储到var中。
所以如果我有http://localhost:8080/dev.html?organization=test,我会得到organization = test。
http://localhost:8080/dev.html?lang=fr&organization=test,我得到组织=测试。
无论URL如何形成或参数的顺序,我都会
organization=<organization>
谢谢
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以使用此函数,假设参数名称不 ,即使参数包含RegExp
中认为特殊的任何字符:
function getParam(url, name, defaultValue) {
var a = document.createElement('a');
a.href = '?' + unescape(String(name));
var un = a.search.slice(1);
var esc = un.replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&');
var re = new RegExp('^\\?&*(?:[^=]*=[^&]*&+)*?(' + esc + ')=([^&]*)');
a.href = url;
var query = a.search;
return re.test(query) ? query.match(re).slice(1).map(decodeURIComponent) : [un, defaultValue];
}
var url = 'http://localhost:8080/dev.html?lang=fr&organization=test&crazy^ ()*key=cool';
console.log(getParam(url, 'organization'));
console.log(getParam(url, 'lang'));
console.log(getParam(url, 'crazy^ ()*key'));
console.log(getParam(url, escape('crazy^ ()*key')));
console.log(getParam(url, encodeURIComponent('crazy^ ()*key')));
console.log(getParam(url, 'foo', 'bar'));
借用How to escape regular expression in javascript? 的
RegExp
转义方法
getParam(url, name[, defaultValue])
url
- 格式正确的网址name
- 要搜索的参数名称defaultValue
(可选) - 如果未找到,则默认值为。如果未指定,则defaultValue
为undefined
return
- [ unescape(name), found ? stringValue : defaultValue ]
答案 2 :(得分:0)
为什么要使用正则表达式?试试这个。
function getOrganization(){
var params = location.search.split('?')[1].split('&');
for(var i = 0; i < params.length; i++){
if(params[i].split('=')[0] == 'organization') return params[i].split('=')[1];
}
}