需要一些帮助正则表达式匹配JWT和来自URL

时间:2018-04-02 18:41:01

标签: javascript regex

我目前正在混合使用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
  3. 我确信使用正则表达式来存储tokenquery变量很容易做到这一点,但是jwt的匹配证明是非常困难的。有人可以向我解释这个过程吗?

2 个答案:

答案 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])