我目前正在混合使用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的匹配证明是非常困难的。有人可以向我解释这个过程吗?
答案 0 :(得分:0)
它可能与非贪婪的正则表达式
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);

答案 1 :(得分:0)
不需要正则表达式
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])