N4JOJ7yZTi5urACYrKW5QQ

N4JOJ7yZTi5urACYrKW5QQ

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(/=(?!$|=)/);
    

    09-11 07:43