从URL获取整个查询

Get whole query from the URL

本文关键字:查询 获取 URL      更新时间:2023-09-26

我有一个问题,从url使用toQueryParams函数从protoypejs框架中获得整个查询例如:

var a = "http://anypage.com?a=lol&b=lal&c=laoa?&d=fehw#lalalalalSomeAnchor";
a.toQueryParams();
>> {d: 'fehw'}
what i want to get:
>> {a: 'lol', b: 'lal', c: 'loaa?', d: 'fehw'}

我知道url是无效的,但我想在将url发送到服务器之前预处理该url以转义其值。

我试图改变函数的正则表达式,只匹配第一个字符之间的字符?而最新的#,我已经有一个表达式/('?.*#)/这将为我工作,但我甚至想排除?还有#,我希望你们中有人能帮我一下:)

顺便说一句。下面的页面非常适合实时构建regexphttp://regexpal.com/

更新:感谢DaveRandom:)对于那些想要在框架中直接修复的人,请将以下行替换为:

L625: var match = this.strip().match(/'?([^#]*)/); // (/([^?#]*)(#.*)?$/); default

这个怎么样?/'?([^#]*)/ ?

您不需要担心匹配到'最后' #,因为锚从第一个#开始,因此即使字符串中有多个#,第一个出现之后的任何内容都不是查询字符串的一部分。

这里,这是可行的....我只是把第一个?和最后一个#之间的一切,连接并运行toQueryParams。也许这已经足够好了?

http://jsfiddle.net/cQYV7/1/

edit还将所有?&替换为?,因此所有参数都匹配…

用户/'?([^#]*)/作为DaveRandom回答,并记住URL编码您的变量。使用encodeURIComponent("value");添加到您的url之前…不能有两个?在你的url