Javascript解析字符串中的GET参数-这是什么意思?
我一直在使用以下函数从当前url获取常规参数:Javascript解析字符串中的GET参数-这是什么意思?,javascript,query-string,Javascript,Query String,我一直在使用以下函数从当前url获取常规参数: function getURLParameter(name) { return decodeURI( (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1] ); } 但是,我想从一个字符串中获取get参数'imgurl',该字符串将遵循url的格式 当我将该函数更改为处理常规字符串时: function getURLPar
function getURLParameter(name) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
但是,我想从一个字符串中获取get参数'imgurl',该字符串将遵循url的格式
当我将该函数更改为处理常规字符串时:
function getURLParameter(name, givenstring) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(givenstring.search)||[,null])[1]
);
}
它返回null。我甚至让一个用户脚本转到我刚才给你的url,我使用第一个函数尝试获取“imgurl”参数,但它无法做到这一点。我还去掉了那个url中的冒号,但很明显,这并没有起到任何作用
关于这个字符串格式,是什么使这个函数失效的?
位置。search
是当前URL的查询字符串部分。如果要将其替换为任意字符串变量givenstring
,则应将location.search
替换为givenstring
,而不是givenstring.search
。因此:
function getURLParameter(name, givenstring) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(givenstring)||[,null])[1]
);
}
顺便说一下,如果(例如)字符串是foobar=baz&bar=bip
,并且感兴趣的参数是bar
,那么函数将出现错误。它将找到bar=…
的第一个实例,在本例中是bar=baz
,而不是bar=bip
。您可以使用(^ |&)
来解决这个问题:
(如果
name
中包含任何特殊字符(URL中的特殊字符或正则表达式中的特殊字符),那么您的函数也会出现错误,但我猜您对name
有足够的控制权,可以确保这不会成为问题?)位置。搜索是当前URL的查询字符串部分。如果要将其替换为任意字符串变量givenstring
,则应将location.search
替换为givenstring
,而不是givenstring.search
。因此:
function getURLParameter(name, givenstring) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(givenstring)||[,null])[1]
);
}
顺便说一下,如果(例如)字符串是foobar=baz&bar=bip
,并且感兴趣的参数是bar
,那么函数将出现错误。它将找到bar=…
的第一个实例,在本例中是bar=baz
,而不是bar=bip
。您可以使用(^ |&)
来解决这个问题:
(如果name
中有任何特殊字符(URL中的特殊字符或正则表达式中的特殊字符),您的函数也会出现错误,但我猜您对name
有足够的控制权,可以确保这不会成为问题?工作得很好!我对Javascript正则表达式没有太多经验,所以我只是想。搜索与执行正则表达式有关。@MarkLyons:这是有道理的。有一个与正则表达式相关的.search
——它是字符串的一个属性,请参阅——但实际上,这不是location.search
所指的,因为location
不是字符串。非常好用!我对Javascript正则表达式没有太多经验,所以我只是想。搜索与执行正则表达式有关。@MarkLyons:这是有道理的。有一个与正则表达式相关的.search
——它是字符串的一个属性,请参阅——但实际上,这不是location.search
所指的,因为location
不是字符串。