JS各种情况处理

1.获取URL及其参数

实例:URL:file:///C:/Program%20Files/nodejs/test/jumbTarget.html?a=1&&b=2&&c=3

  //假设返回的对象类型为Array或单个字符串
        function getUrlParams() {
            var str = location.search;

            if (str.indexOf("?") != -1) { //判断参数是否存在
                var doneStr = str.substr(1);

                if (doneStr.indexOf("&&") != -1) {
                    var arr1 = doneStr.split("&&");
                    var arr2 = arr1.map(function (item) {
                        return item.split("=")[1];
                    })
                    return arr2;
                } 

                else {
                    return doneStr.split("=");
                }
            }
            
            else {
                console.error("当前URL中无参数存在!");
            }
        }  

返回的结果为["1","2","3"],当然也可以进行其他类型的返回,例如object等;

方法二:正则表达式

 //假设返回的对象类型为Array(这个例子不对单个参数做判断了)
        function getUrlParams() {
            var str = location.search;

            if (str.indexOf("?") != -1) { //判断参数是否存在
                var doneStr = str.substr(1);

                var reg  = /=\w+(?=&&|\b)/g;
                var arr = doneStr.match(reg);
                return arr.map(function(item) {
                    return item.substr(1);
                })
            }
            
            else {
                console.error("当前URL中无参数存在!");
            }
        }  
        
        var paramsArr = getUrlParams();
        console.log(paramsArr);

 在JS比较尴尬的是,JS并不支持负向零宽断言,所以无法直接使用?<=来匹配=,因此多了map函数的一步。

注:JS不支持正则的负向零宽断言,只支持正向零宽断言。

  

posted @ 2018-04-13 08:29  落落月  阅读(229)  评论(0编辑  收藏  举报