【发布时间】:2013-01-26 21:45:23
【问题描述】:
当我有这样的网址时:
http://server/site?firstname=Jack&lastname=Daniels
我知道在我的 JavaScript 中,对名字的查询应该返回“Jack”。
但是在以下情况下,查询 firstname 应该返回什么:
http://server/site?lastname=Daniels
http://server/site?firstname&lastname=Daniels
http://server/site?firstname=&lastname=Daniels
[编辑]回答一些cmets:以上都是合法的查询字符串,我的问题不是关于如何检索参数而是如何解释它们。
作为记录,我使用以下涵盖所有情况的正则表达式解析查询字符串:
/([^?=&;]+)(?:=([^&;]*))?/g
显然有a very popular question on how to retrieve querystring parameters,但答案不正确(或者至少没有解决边缘情况)。
[更新]我根据@Bergi 和@zzzzBov 的回答做出的选择:
http://server/site?lastname=Daniels => firstname: undefined
http://server/site?firstname&lastname=Daniels => firstname: true
http://server/site?firstname=&lastname=Daniels => firstname: ""
http://server/site?firstname=Jack&lastname=Daniels => firstname: "Jack"
一个副作用是我不得不稍微修改我的正则表达式,就像上面的规则一样,= 符号需要被捕获:
/([^?=&;]+)(=[^&;]*)?/g
【问题讨论】:
-
获取查询字符串数据,同时可以忽略无效的查询字符串参数,显示有效参数的结果集
-
就个人而言,我一直使用这个函数:stackoverflow.com/questions/901115/…
标签: javascript html url query-string