[英]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
我需要获取以下变量:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWJmYzhmYTE1Zjg4MzAwMWQxNDJiMzYiLCJpYXQiOjE1MjI1MTgyNjY2NjV9.yl6iYkJ5_fLqWeDwQuBfZkxMSa7iCZrSP62_ypligNE
/resource&id=aa&cat=az
) 我坚信使用正则表达式可以轻松地完成存储token
和query
变量的操作,但事实证明,匹配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.