js 获取url完整地址?

function getQueryString(name) {
        var reg = new RegExp('(^|&)' + name + '=' + '([^&;]+?)(&|#|;|$)');
        var r = window.location.search.substr(1).match(reg);
        if (r) {
          return window.unescape(r[2]);
        }
        return '';
      }

调用:

getQueryString('return_url');

测试地址:

file:///D:/jdProject/cnooc/ooc-html/login.html?return_url=http://192.168.1.82:8020/?name=zhang&sex=nan&age=90/#/uuu

这样打印出来,就显示

http://192.168.1.82:8020/?name=zhang

而我想要的是显示整个return_url后面的值

http://192.168.1.82:8020/?name=zhang&sex=nan&age=90/#/uuu

正则那里写的有问题?

阅读 1.5k
3 个回答

'(^|&|\?)' 这里得有 号 。昂取的 search.substr 啊,那不用

那应该是值没 encode

return_url后面的值要encodeURIComponent处理下,再来获取

let testurl = `file:///D:/jdProject/cnooc/ooc-html/login.html?return_url=${encodeURIComponent(http://192.168.1.82:8020/?name=zhang&sex=nan&age=90/#/uuu)}`

function getQueryString(name, url) {
        var reg = new RegExp('[?&]'+name+'=([^&#]+)');
        var r = url.match(reg);console.log(r)
        if (r) {
          return decodeURIComponent(r[1]);
        }
        return '';
      }
const url = `file:///D:/jdProject/cnooc/ooc-html/login.html?return_url=http://192.168.1.82:8020/?name=zhang&sex=nan&age=90/#/uuu`

const rs = url.split('return_url=').slice(1).join('return_url=')
console.log(rs)

简单、粗暴、且有效。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题