如何有条件地修剪URL

时间:2017-04-27 05:44:09

标签: javascript html string

我有以下代码来修剪URL以检查参数是否存在。例如,如果网址为http://localhost:3000/page?name=jack?number=2000,则代码应为subString 2000。可能存在URL中不存在number参数的情况。

var url = window.location.href;
var subString = url.substring(url.lastIndexOf('number=') + 7);

alert(subString);
alert(subString.length);

if (subString.length <= 0) {
    //logic here
}

这不按预期工作。无论出于何种原因,当number参数不在URL中时,subString将成为完整的URL。但是,当有一个数字时,它工作正常。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我会使用下面的方法,它符合来自querystring的进一步提取变量

<强>功能

var getUrlParams = function()
        {
            var match,
            pl = /\+/g,  // Regex for replacing addition symbol with a space
            search = /([^&=]+)=?([^&]*)/g,
            decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
            query = window.location.search.substring(1);

            var urlParams = {};
            while (match = search.exec(query))
                urlParams[decode(match[1])] = decode(match[2]);

            return urlParams;
        }

<强>用法

var param = getUrlParams();
var number = param["number"];

答案 1 :(得分:0)

首先检查当前number=中的indexOf URL。如果它返回-1,则表示number中没有URL参数。

带数字参数的DEMO:

var url = "http://localhost:3000/page?name=jack?number=2000";
if(url.indexOf('number=') != -1) {
var subString = url.substring(url.lastIndexOf('number=') + 7);
alert(subString);
alert(subString.length);
} else {
  alert("no number param");
}

没有数字参数的DEMO:

var url = "http://localhost:3000/page?name=jack";
if(url.indexOf('number=') != -1) {
var subString = url.substring(url.lastIndexOf('number=') + 7);
alert(subString);
alert(subString.length);
} else {
  alert("no number param");
}