zoukankan      html  css  js  c++  java
  • JS 获取字符串中的url并返回其下标索引

    //获取字符串中的url极其下标索引
    function getHttpUrlArray(s) {
        var s1 = s.match(/http.*/);
        if(s1 == null) {
            return null;
        }
        var yuan = s;
        var url = [];
        var i=0;
        var indexArray = new Array(length);
        while(s1 != null) {
            var indexInL = { first: 0, last: 0, url: "" };
            //获取下标索引
            var index = s1.index;
            //如果是第一个,加入
            if(i == 0) {
                indexInL.first = index;
            } else {
                indexInL.first = index;
                
            }
            //查找之后的第一个汉字
            //获取其下标索引
            var s2 = s1[0].match(/[u4e00-u9fa5]/);
            //若汉字存在
            if(s2 != null) {
                var noIndex = s2.index;
                //如果是第一个,直接加入
                if(i == 0) {
                    indexInL.last = noIndex + index;
                } else {
                    indexInL.last = noIndex + index;
                }
                //取得url
                indexInL.url = s1[0].substring(0, noIndex);
                s = s.substring(noIndex + index);
                s1 = s.match(/http.*/);
            } else {
                //如果是第一个,直接加入
                if(i == 0) {
                    indexInL.last = yuan.length;
                } else {
                    indexInL.last = yuan.length;
                }
                s = s.substring(index);
                indexInL.url = s;
                s1=null;
            }
            indexArray[i] = indexInL;
            i++;
        }
        return indexArray;
    }
    比较笨,不会写正则表达式,只好用笨方法了。。。

    有时候我们会复制带格式的内容,但是我们又需要将自己手写的网址添加上解析出来,下面的是将复制的url过滤,只返回手动添加的url

    function getHttpUrlArray(s) {
        var s0 = s.match(/http.*/);
        var s1 = s.match(/[^'"=]http.*/);
        console.log(s1)
        var yuan = s;
        var url = [];
        var i = 0;
        var indexArray =[];
        var indexInL1 = { first: 0, last: 0, url: "" };
        if(s0 != null) {
            if(s0.index == 0) {
                var s0end = s.match(/[u4e00-u9fa5<s,,。;;]/);
                if(s0end != null) {
                    indexInL1.first = 0;
                    indexInL1.last = s0end.index;
                    indexInL1.url = s.substring(0, s0end.index)
                } else {
                    indexInL1.first = 0;
                    indexInL1.last = s.length;
                    indexInL1.url = s.substring(0, s.length)
                }
                indexArray[i] = indexInL1;
                i++;
            }
        }
        if(s1 == null && s0 == null) {
            return null;
        } else if(s1 == null && s0 != null) {
            return indexArray;
        }
        while(s1 != null) {
            console.log(s1)
            var indexInL = { first: 0, last: 0, url: "" };
            //获取下标索引
            var index = s1.index;
            indexInL.first = index + 1;
            console.log("s1开始", index + 1)
            //查找之后的第一个汉字或结束标签或,。;:
            //获取其下标索引
            var s2 = s1[0].substring(1).match(/[u4e00-u9fa5<s,,。;;]/);
            //若汉字存在
            if(s2 != null) {
                var noIndex = s2.index;
                indexInL.last = noIndex + index + 1;
                console.log("s2 结束", noIndex + index + 1)
                //取得url
                indexInL.url = s1[0].substring(1, noIndex + 1);
                s = s.substring(noIndex + index + 1);
                console.log("s的值 ", s)
                s1 = s.match(/[^'"=]http.*/);
            } else {
                //如果是第一个,直接加入
                if(i == 0) {
                    indexInL.last = s.length;
                } else {
                    indexInL.last = s.length;
                }
                s = s.substring(index + 1);
                indexInL.url = s;
                console.log("url ", s)
                s1 = null;
            }
            indexArray[i] = indexInL;
            i++;
        }
        return indexArray;
    }
  • 相关阅读:
    利用SEH进行代码混淆
    HDU5294 Tricks Device(最大流+SPFA) 2015 Multi-University Training Contest 1
    输入字符串反序输出
    微信公众平台开发(104) 自定义菜单扫一扫、发图片、发地理位置
    不同编码页面之间表单的提交方法
    PHP登陆Session验证
    微信公众平台开发培训
    微信公众平台开发(98) UnionID
    微信电商再侵袭,腾讯要革淘宝的命
    微信企业号
  • 原文地址:https://www.cnblogs.com/liter7/p/6427417.html
Copyright © 2011-2022 走看看