正则表达式从URL获取特定参数

时间:2018-02-22 16:42:17

标签: javascript regex

假设我们有这样的网址

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> 

谢谢

3 个答案:

答案 0 :(得分:3)

为什么要使用RegEx 或拆分?试试这个:

for

(要求IE中URL API的填充)

答案 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(可选) - 如果未找到,则默认值为。如果未指定,则defaultValueundefined
  • 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];
    }
}