用于捕获 ApiAuth 的正则表达式 Headers

Regex to capture ApiAuth Headers

我有以下场景将 Auth Headers 发送到应用程序,范围如下:

"APIAuth 5b6b7ed3b9708d1168455da4:hW1ZeYYLJFGBP8tEHAEGoiGD1xM="

"APIAuth-HMAC-SHA256 5b6b7ed3b9708d1168455da4:hW1ZeYYLJFGBP8tEHAEGoiGD1xM="
  

etc.

我想要做的是能够从 header 中捕获 APIAuthAPIAuth-HMAC-SHA256,这样我就可以得到 client_id:signature

string = '5b6b7ed3b9708d1168455da4:hW1ZeYYLJFGBP8tEHAEGoiGD1xM='

我希望能够从任何 APIAut-WHATEVER-ENCRYPTION

中获取这个值

我一直在玩正则表达式,但我最好的是这个 /\ABearer\s+/i。我认为这会同时抓住这两个字符,因为 \s+ 不仅仅是任何单个字符之一,所以我不知道为什么它不起作用。有人可以帮忙吗?正则表达式不是我的强项。谢谢。

对于示例字符串,您可以匹配您想要的部分:

\bAPIAuth(?:-\S+)?\s+\K[^\s:"]+:[^\s:"]+

说明

  • \bAPIAuth一个字边界,后面是APIAuth
  • (?:-\S+)? 可选择匹配 - 和 1+ 个非空白字符
  • \s+\K 匹配 1+ 个空白字符并忘记到目前为止使用 \K
  • 匹配的内容
  • [^\s:"]+:[^\s:"]+ 匹配 : 被非空白字符包围的字符或 :" 如果它们也是字符串的一部分

看到一个rubular regex demo.

您也可以只匹配第一部分,然后替换为空字符串。

\bAPIAuth(?:-\S+)?\s+

再看一个regex demo