I have a code which提取查询字符串参数:
因此(例如),如果窗口网址为:....&a=1&.....
-该代码首先在split
上使用&
,然后在=
上进行拆分
但是,有时我们使用base64值,该值可以有额外的结尾='s
(填充)。
And here is where my code is messed up.
结果是N4JOJ7yZTi5urACYrKW5QQ
,应该是N4JOJ7yZTi5urACYrKW5QQ==
所以我将我的正则表达式增强为:
搜索 =
,以便之后的成为-> (there is no end
或 there is no [=]
)'a=N4JOJ7yZTi5urACYrKW5QQ=='.split(/\=(?!($|=))/)
它确实有效。 (您可以在控制台上运行它)
但结果是["a", undefined, "N4JOJ7yZTi5urACYrKW5QQ=="]
["a", "N4JOJ7yZTi5urACYrKW5QQ=="]
的regex
ps
我知道我可以将所有的finals =
替换为临时的,然后再替换回去
但是此标签被标记为正则表达式。因此,即时通讯正在寻找一种方法来修复我的正则表达式。
最佳答案
发生这种情况是因为您还有其他匹配项($|=)
。您可以将其从?:
中排除:
"a=N4JOJ7yZTi5urACYrKW5QQ==".split(/=(?!(?:$|=))/);
但是,您始终可以使匹配变平并删除多余的块:
"a=N4JOJ7yZTi5urACYrKW5QQ==".split(/=(?!$|=)/);