Javascript Regex从URL获取特定参数

Javascript Regex从URL获取特定参数,javascript,regex,Javascript,Regex,假设我们有这样一个URL 我想创建一个只接受organization=test的正则表达式,以便将其存储到var中 如果我有,我会得到组织=测试 ,我得到组织=测试 无论URL是如何形成的,或者参数的顺序如何,我都会得到 organization=<organization> 组织= 谢谢为什么要使用正则表达式?试试这个 function getOrganization(){ var params = location.search.split('?')[1].spl

假设我们有这样一个URL

我想创建一个只接受organization=test的正则表达式,以便将其存储到var中

如果我有,我会得到组织=测试

,我得到组织=测试

无论URL是如何形成的,或者参数的顺序如何,我都会得到

organization=<organization> 
组织=

谢谢

为什么要使用正则表达式?试试这个

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];
    }
}
函数getOrganization(){
var params=location.search.split('?')[1].split('&');
对于(变量i=0;ilog(getParam(url,'foo','bar')
您可以使用此函数,假设参数名称不包含任何被认为是在
RegExp
中特殊的字符:

函数getParam(url、名称、默认值){ var a=document.createElement('a'); a、 href=“?”+unescape(字符串(名称)); var un=a.search.slice(1); var esc=un.replace(/[.?*+^$[\]\\(){}\-]/g,\\$&'); var re=new RegExp('^\\?&*(?:[^=]*=[^&]*&+*?('+esc+')=([^&]*)); a、 href=url; var query=a.search; 返回re.test(query)→query.match(re).slice(1).map(decodeURIComponent):[un,defaultValue]; } var url='1〕http://localhost:8080/dev.html?lang=fr&organization=test&crazy^()*键=酷'; log(getParam(url,'organization'); log(getParam(url,'lang')); log(getParam(url,'crazy^()*key'); log(getParam(url,escape('crazy^()*key')); log(getParam(url,encodeURIComponent('crazy^()*key')); log(getParam(url,'foo','bar')为什么使用RegEx或split?试试这个:

function getOrganization(){
    return new URLSearchParams(location.search).get('organization')
}
(需要在IE中使用polyfill)

为什么要使用正则表达式或拆分?试试这个:

function getOrganization(){
    return new URLSearchParams(location.search).get('organization')
}

(IE中的URL API需要polyfill)

你当前的正则表达式是什么,你尝试了什么?你当前的正则表达式是什么,你尝试了什么?IE中的URL API需要polyfill是什么意思?@Ziko这意味着IE没有内置的,但是可以包含第三方脚本,以便IE可以使用它。我明白了。我真的很喜欢这个答案,因为这是我第一次听说URLSearchParams,但我会接受上面的答案,因为它更准确,还有一个正则表达式,可能会帮助很多其他人。如果兼容性不是一个问题,我真的很喜欢这个。否则,必须包含一个polyfill似乎有点过头了。编辑:虽然它不是很大。@EliteTech我发现的边缘案例越多,我的解决方案就越大。。。不过,至少现在我认为它是“精确的”。以前,它甚至不如使用
split('&')
那么健壮,现在它可以处理各种编码的URL和名称。你说IE中的URL API需要polyfill是什么意思?@Ziko这意味着IE没有这种内置的,但是可以包含第三方脚本,这样IE就可以使用它了。我明白了。我真的很喜欢这个答案,因为这是我第一次听说URLSearchParams,但我会接受上面的答案,因为它更准确,还有一个正则表达式,可能会帮助很多其他人。如果兼容性不是一个问题,我真的很喜欢这个。否则,必须包含一个polyfill似乎有点过头了。编辑:虽然它不是很大。@EliteTech我发现的边缘案例越多,我的解决方案就越大。。。不过,至少现在我认为它是“精确的”。以前,它甚至不如使用
split('&')
那么健壮,现在它可以处理各种编码的URL和名称。看起来很有趣。现在WHATWG为我们处理这些问题是件好事;)顺便说一句,正在使用
拆分
,然后执行一系列步骤,包括用空格替换任何“+”。@Touffy啊,我忘了
+
被区别对待了。。。在这一点上,我认为我已经做了足够多的其他事情。如果这个函数的用户知道
+
需要编码/解码,那么我会让他们从这个实现中找到答案。看起来很有趣。现在WHATWG为我们处理这些问题是件好事;)顺便说一句,正在使用
拆分
,然后执行一系列步骤,包括用空格替换任何“+”。@Touffy啊,我忘了
+
被区别对待了。。。在这一点上,我认为我已经做了足够多的其他事情。如果这个函数的用户知道需要对
+
进行编码/解码,那么我将让他们从这个实现中找到答案。