简体   繁体   English

如何使用JavaScript捕获部分URL字符串

[英]how to catch part of url string with javascript

I have a url string like this: example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1 我有这样的网址字符串: example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1

Is it possible to catch only the part after the = with javascript? 是否可以使用JavaScript仅捕获=之后的部分? So the catched part should be this: uploads/sfm/root/folder1/subfolder1 所以要抓住的部分应该是这样: uploads/sfm/root/folder1/subfolder1

You may try this (Taken From MDN): 您可以尝试以下操作(来自MDN):

var getQueryVarByName = function (name)
{
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
};

Use: 采用:

var param = getQueryVarByName('dir'); // uploads/sfm/root/folder1/subfolder1

You can use split to split string at = and get second part 您可以使用split=处分割字符串并获得第二部分

 var str = 'example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1'; var part = str.split('=')[1]; console.log(part); 

You can use .split() to get it: 您可以使用.split()来获取它:

Working Example 工作实例

var url = "example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1";

var s = url.split('=')[1];

You can try this (Using the .split() ): 您可以尝试以下操作(使用.split() ):

function getFilePath(fullPath){
    return fullPath.split("dir=")[1];
}

Now call it the following way: 现在以以下方式调用它:

getFilePath("example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1")

You need to create regexp . 您需要创建regexp If there are more parameters after dir regular expression should be more complicated. 如果在dir之后有更多参数,则正则表达式应该更复杂。

 var url = 'example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1'; var regexp = /dir=([\\w\\W]*)/; var matched = url.match(regexp); document.body.innerHTML = matched[1]; 

The part after question mark ? 问号后的部分? is known as window.location.search . 被称为window.location.search It is possible that you have than 1 parameter in this querystring. 此查询字符串中可能有多个参数。 So safe solution should be like this: 所以安全的解决方案应该是这样的:

//example.com/sfm?dir=uploads/sfm/root/folder1/subfolder1&un=test&time=1234
function getPath(){
var query=window.location.search //?dir=uploads/sfm/root/folder1/subfolder1&un=test&time=1234
   .replace(/^\?/,'') //dir=uploads/sfm/root/folder1/subfolder1&un=test&time=1234
   .split('&'); //[dir=uploads/sfm/root/folder1/subfolder1, un=test, time=1234]
for(var i = 0, n = query.length;i < n;i++){
   var qs = query[i].split('=');
   if(qs.length == 2 && qs[0] == 'dir')
      return qs[1]; //if found
}//for
return null; // not found
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM