js 获取url参数值 可取token
原理
这里正则所使用的匹配方式为"&"取反方式,避免token中包含特殊字符无法匹配完整的问题,且适配了token前后参数可有可无的情况,代码使用的是typescript
定义
/**
* 获取url参数值
* @param url Url
* @param paramName 参数名
* @returns 匹配的值
*/
export function GetUrlParamValue(url: string, paramName: string): string {
let value = ''
if (paramName) {
const regExp = new RegExp(`${paramName}=(?<${paramName}>[^&]+)&*`)
const regExpMatchs = url.match(regExp)
if (regExpMatchs) {
if (regExpMatchs.groups) {
const temp = regExpMatchs.groups[paramName]
if (temp) {
value = temp
}
}
}
}
return value
}
使用
const url = 'http://localhost/baidu/#/callback?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9zaWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL2V4cGlyZWQiOiIxNjU2OTExMjM1IiwiVXNlck5hbWVDTiI6IiVFNyVBRSVBMSVFNyU5MCU4NiVFNSU5MSU5OCIsIlVJRCI6ImFkbWluIiwiRW1haWwiOiJhZG1pbkBhZG1pbi5jb20iLCJHSUQiOiJhZG1pbiIsIlNhcFJvbGUiOiJDUE0iLCJTYXBVc2VyTm8iOiI4MDg2MTE2NiIsIlRpdGxlIjoiM1QiLCJVc2VyTmFtZUVuIjoiYWRtaW4iLCJSb2xlcyI6IiIsIk9sZEdJRCI6IiIsIk1vZHVsZXMiOiJVLFAsTSxELFMsVFMiLCJQZXJzc2lvbnMiOiItMTM2MzEzMDg4IiwiZXhwIjoxNjU5NDkzMjM1LCJpc3MiOiJTT0Rlc2siLCJhdWQiOiJTT0FwaSJ9.nJXls2xyPf3H9o6ZIyZ0pgTqDRipDqfAedcn6QJ9AJQ¶m2=xxxxx'
const token = getParamValue(url, 'token')
console.log(token)
评论已关闭