Javascript Regex从URL获取特定参数
假设我们有这样一个URL 我想创建一个只接受organization=test的正则表达式,以便将其存储到var中 如果我有,我会得到组织=测试 ,我得到组织=测试 无论URL是如何形成的,或者参数的顺序如何,我都会得到Javascript Regex从URL获取特定参数,javascript,regex,Javascript,Regex,假设我们有这样一个URL 我想创建一个只接受organization=test的正则表达式,以便将其存储到var中 如果我有,我会得到组织=测试 ,我得到组织=测试 无论URL是如何形成的,或者参数的顺序如何,我都会得到 organization=<organization> 组织= 谢谢为什么要使用正则表达式?试试这个 function getOrganization(){ var params = location.search.split('?')[1].spl
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;i
为什么要使用正则表达式?试试这个
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;i
您可以使用此函数,假设参数名不包含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')您可以使用此函数,假设参数名称不包含任何被认为是在
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啊,我忘了+
被区别对待了。。。在这一点上,我认为我已经做了足够多的其他事情。如果这个函数的用户知道需要对+
进行编码/解码,那么我将让他们从这个实现中找到答案。