[英]Get whole query from the URL
我在使用protoypejs框架eG的toQueryParams函数从URL获取整个查询时遇到问题:
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'}
我知道该网址无效,但我想对该网址进行预处理以转义其值,然后再将其发送到服务器。
我试图更改函数正则表达式以仅匹配第一个之间的字符? 和最新的#,我已经有一个表达式/(\\?.*#)/适用于我,但我什至想排除?? 和#,我希望你们中的某人可以帮助我:)
顺便说一句 下面的页面非常适合实时构建regexp:P http://regexpal.com/
更新 :感谢DaveRandom :)对于那些想要直接在框架中修复此问题的人,将以下行替换为:
L625: var match = this.strip().match(/\?([^#]*)/); // (/([^?#]*)(#.*)?$/); default
怎么样... /\\?([^#]*)/
?
你不应该需要担心匹配到“最后” #
因为锚开始于第一#
,因此即使有不止一个#
字符串中,第一次出现后,事情不是查询字符串的一部分。
用户/\\?([^#]*)/
作为DaveRandom的回答,请记住要对变量进行URL编码。 使用encodeURIComponent("value");
在将其添加到您的网址之前。 ..不能有两个?
在您的网址中。
在这里,这个工程....我只是拿了第一之间的一切?
最后一个#
串联并运行到QueryParams上。 也许这足够好了?
编辑还用?&
替换了所有?&
?
所以所有参数都匹配...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.