给出以下两个例子:
'123?type=hand' ===> 'type'
'123?type=hand&status=alive'
===> '输入状态'
用英语我想:找到?
并删除前面的所有内容。
查看=
并删除&
之后的所有内容。
在一天结束时,我想要的只是一个字符串,数组,以及任何实际的queryStringVariableNames。没有任何价值。
我认为我过于复杂化了。 :)
以下是我一直在使用的几个片段:
var pattern = /\*(\?)|\*(\&)|(\=)\*/ig;
var pattern = /(.+?\?)/g;
str.replace(pattern, function (matcher, positionOfMatch, item) {
return '';
});
我开始使用replace
的longform,所以我可以更好地了解发生了什么。
修改
我的确切实施结果如下:
function (str) {
str = str.substr(str.indexOf('?') + 1);
return str.split('&')
.map(function (i) {
return i.substr(0, i.indexOf('='))
});
}
答案 0 :(得分:3)
使用字符串操作而不是正则表达式会更容易。这将为您提供一个包含字符串中键的数组:
var str = '123?type=hand&status=alive';
str = str.substr(str.indexOf('?') + 1);
var keys = str.split('&');
for (var i = 0; i < keys.length; i++) {
keys[i] = keys[i].substr(0, keys[i].indexOf('='));
}
// Show in StackOverflow snippet
document.write(JSON.stringify(keys));
&#13;
答案 1 :(得分:1)
我这样做:
var result = str.split("?")[1].split("&");
因此,如果您的字符串为123?foo=bar&one=something¬hing=else
,那么您将获得一个字符串数组result
:foo=bar
,one=something
,nothing=else
。
然后result[0]
可以访问第一个参数,其密钥可以result[0].split("=")[0]
访问,其值可以result[0].split("=")[1]
访问。
答案 2 :(得分:1)
答案 3 :(得分:1)