如何根据当前url获取路径上的参数值?
例:
// 若网页前路径url
https://editor.csdn.net/md/?id=1&workId=2&name=小包子
方法如下:
urlGetParam(param) {const reg = new RegExp(`(^|&)${param}=([^&]*)(&|$)`);const r = decodeURIComponent(window.location.search.substr(1)).match(reg);if (r != null) return unescape(r[2]);return null;}// 使用const id = urlGetParam('id');const workId = urlGetParam('workId');const name = urlGetParam('name'); console.log(id,workId,name) // 1,2,小包子
解析:
new RegExp
是 JavaScript 中创建正则表达式对象的一种方式。
(^|&) 表示行首或者以&开头(^)
param 表示传进来的变量
= 还是表示等号
([^&]*) 表示非(^)&的任意(*)个字符 (0到多个)
(&|$) 表示以&结束或者是行尾($)
decodeURIComponent
是 JavaScript 中的一个内置函数,用于将通过 encodeURIComponent
编码的 URI 组件解码,还原为原始的字符串形式。
xxx.match(reg)
中match的使用意思是找到字符串中符合正则条件的内容返回。即把字符串中符合正则要求的第一项以及一些其他信息,以数组的形式返回。 reg
则是上已经定义好的正则规则。
window.location.search.substring(1)
为JavaScript 中获取当前url链接中的?号后的参数
id=1&workId=2&name=小包子
·unescape
函数是JavaScript中的一个全局函数,用于将被转义的字符串还原成原始字符串