//获取字符串中的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;
}

JS 获取字符串中的url并返回其下标索引的更多相关文章

  1. js 获取字符串中某字符第二次出现的下标

    var res = "a-b-c-d";var index = find(res,'-',1); //字符串res中第二个‘-’的下标 var ress = res.substri ...

  2. js 获取字符串中最后一个斜杠后面的内容

    var str = "/asdasf/asfaewf/agaegr/trer/rhh"; var index = str .lastIndexOf("\/"); ...

  3. js 获取字符串中所有的数字和汉字

    var re1 = /(\d{1,3})+(?:\.\d+)?/g var re2 = /[\u4e00-\u9fa5]{2,}/g var str="11我22们33两个"; v ...

  4. 获取字符串中img标签的url集合(转载)

    /// <summary> /// 获取字符串中img的url集合 /// </summary> /// <param name="content"& ...

  5. 正则表达式获取字符串中的img标签中的url链接

    废话不多说直接看代码 JavaScript中的代码: var re = /src=\"([^\"]*?)\"/i; var arr = str.match(re); if ...

  6. JS正则表达式获取字符串中特定字符

    JS正则表达式获取字符串中得特定字符,通过replace的回调函数获取. 实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test  实 ...

  7. 【2017-06-29】在登录页面自动返回上次请求页面、Js获取table中的行数与列数

    一.在登录页面自动返回上次请求页面 Request.UrlReferrer比如 if (Request.UrlReferrer != null) { //如果能获取来路地址 Response.Redi ...

  8. 获取字符串中每个字符出现的次数(利用TreeMap)

    案例:"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)分析1:定义一个字符串(可以改进为键盘录入)2:定义一个 ...

  9. C#,.net获取字符串中指定字符串的个数、所在位置与替换字符串

    方法一: public static int indexOf (字符串/字符,int从第几位开始,int共查几位) string tests = "1absjjkcbfka2rsbcfak2 ...

随机推荐

  1. STL<queue>的使用

    队列是一种基本的线性数据结构.它满足先进先出(First In ,First Out)的原则. 我们可以应用这种数据结构实现很多复杂的问题.但每次要手写队列的相关函数并不省事,我们便可以应用STL中的 ...

  2. Django Views and URLconfs

    碧玉妆成一树高,万条垂下绿丝绦. 不知细叶谁裁出,二月春风似剪刀. 原文尽在:http://djangobook.com/ 转载请注明出处:http://www.cnblogs.com/A-FM/p/ ...

  3. logrotate日志转储

    1 工具目录 ***系统开启selinux,logrotate会不生效*** linux默认会安装logrotate工具,自身的boot.log就是通过它分割转储的. [root@webmaster ...

  4. python之类的相关名词解释

    变量:在类里面定义的变量,不必实例化即可调用 实例变量:在类里面定义的变量,必须实例化之后才可以调用 比如: 属性方法:调用时看起来像是一个变量,方法没有入参,可以变成一个属性方法 在方法上添加@pr ...

  5. [转]在WIN7下安装运行mongodb

    本文转自:http://www.cnblogs.com/snake-hand/p/3172376.html 1).下载MongoDB http://downloads.mongodb.org/win3 ...

  6. 【C#】.net 发送get/post请求

    基础学习 /// <summary> /// Http (GET/POST) /// </summary> /// <param name="url" ...

  7. idea使用Git提交代码时忽略指定文件或文件夹

    简述 使用idea编写代码并使用git作为版本控制器的时候,常常不需要提交配置文件以及一些其他不需要提交的文件,可以使用.ignore插件来在上传的时候忽略一些文件或文件夹. 安装 注意:安装完成之后 ...

  8. Winform datagridview 基础

    ======================================================================================== == 重点需要掌握 A ...

  9. MySQL系列:隐式类型转化可能带来的坑

    在开发规范中,我们往往会要求研发避免在where条件中出现隐式类型转换,这么要求大概有以下两方面的原因: 隐式类型转换可能导致索引失效: 隐式类型转换可能产生非预期的结果. 注:这里说的是隐式类型转换 ...

  10. ArcGIS Desktop新建postgresql版sde(10.4.1)的连接

    假设连接到的sde数据库是pg数据库,其他参数包括: ip:10.0.0.8 数据库:sde1 用户:sde 密码:sde 打开catalog,新建数据库连接 按如下输入数据库连接参数 红框1是数据库 ...