当我有一个网址是这样的:约定的查询字符串参数
http://server/site?firstname=Jack&lastname=Daniels
我明白,在我的JavaScript的姓名查询应该返回“杰克”。
但是应该怎样查询在下列情况下姓回报:
http://server/site?lastname=Daniels
http://server/site?firstname&lastname=Daniels
http://server/site?firstname=&lastname=Daniels
[编辑]为了回答一些评论:以上所有的都是合法的查询字符串,我的问题不是如何检索参数,但如何解释它们。
为了记录在案,我解析查询字符串用下面的正则表达式,涵盖所有情况:
/([^?=&;]+)(?:=([^&;]*))?/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
取决于您如何创建该功能。 – Dom 2013-02-11 18:06:59
获取查询字符串数据,同时您可以忽略无效的查询字符串参数,并显示结果集的有效参数 – 2013-02-11 18:07:16
@Dom,这就是为什么我查询通常的约定 – Christophe 2013-02-11 18:08:09