繁体   English   中英

需要一些帮助以正则表达式匹配JWT和URL中的资源

[英]Need some help to regex match a JWT and a resource from URL

我目前正在使用javascript slice()substring()方法的混合来从看起来像这样的字符串中提取jwt和资源路径:

?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWJmYzhmYTE1Zjg4MzAwMWQxNDJiMzYiLCJpYXQiOjE1MjI1MTgyNjY2NjV9.yl6iYkJ5_fLqWeDwQuBfZkxMSa7iCZrSP62_ypligNE&query=/resource&id=aa&cat=az

我需要获取以下变量:

  1. 令牌 (应为eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWJmYzhmYTE1Zjg4MzAwMWQxNDJiMzYiLCJpYXQiOjE1MjI1MTgyNjY2NjV9.yl6iYkJ5_fLqWeDwQuBfZkxMSa7iCZrSP62_ypligNE
  2. 查询 (应为/resource&id=aa&cat=az

我坚信使用正则表达式可以轻松地完成存储tokenquery变量的操作,但事实证明,匹配jwt非常困难。 有人可以向我解释这个过程吗?

非贪婪的正则表达式可能

 var largeString = "?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWJmYzhmYTE1Zjg4MzAwMWQxNDJiMzYiLCJpYXQiOjE1MjI1MTgyNjY2NjV9.yl6iYkJ5_fLqWeDwQuBfZkxMSa7iCZrSP62_ypligNE&query=/resource&id=aa&cat=az" // from "token=" to the first & var preToken = /token=(.*?)&/.exec(largeString); var token = preToken[preToken.length - 1]; console.info(token); // from "query=" to the last character var preQuery = /query=(.*?)$/.exec(largeString); var query = preQuery[preQuery.length - 1]; console.info(query); 

无需正则表达式

 const input = '?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWJmYzhmYTE1Zjg4MzAwMWQxNDJiMzYiLCJpYXQiOjE1MjI1MTgyNjY2NjV9.yl6iYkJ5_fLqWeDwQuBfZkxMSa7iCZrSP62_ypligNE&query=/resource&id=aa&cat=az'; const [token, query] = input.slice(7).split('&query='); console.log([token, query]) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM