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;
}

 

posted @ 2017-02-22 09:35  liter7  阅读(1947)  评论(0编辑  收藏  举报