JS各类状况处理

1.获取URL及其参数javascript

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

  //假设返回的对象类型为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等;java

方法二:正则表达式node

 //假设返回的对象类型为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不支持正则的负向零宽断言,只支持正向零宽断言。函数

相关文章
相关标签/搜索