提取特定两个字符串之间的字符串

需求场景:提取百度ueditor中的所有样式中背景图片的地址;

百度ueditor,这里就不多说了,很强大的编辑器,我们知道,百度ueditor中所有的样式都是内联样式,api中可以获取整个html字符串。ok,举个栗子,比如酱样紫:


我要提取的就是所有内联样式中的url()里面的内容,下面上代码:

var reg = /url\((\S*)\)/g, ret = [];
    function pick(str){
        while(arr = reg.exec(str)) ret.push(arr[1]);
        return ret;
    }
    pick(str);
//str就是要提取的字符串

这里估计有人会问,match()方法不是直接可以取出么?
好,我要说的重点也是这里:

js里的match方法在正则/g模式下,没办法取到分组结果,比如说这样的结果没法去掉两个特定的字符串的:


Why? 你真的了解match()方法么?我们先来打印一下不带 g 是什么样子的。


我们看到它返回一个数组,数组中有两项,分别是带特定字符串和不带特定字符串的,一般如果只有全局只有一个的话,我们可以直接使用

str.match(/url\((\S*)\)/)[1];
//这样取出来的自然是不带特定字符串的

巴特!很多时候这两个特定字符串会出现很多次,就比如我这个应用场景,那就可以使用我上面的方法去破解。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 1,504评论 0 4
  • 公司大厦前的路又堵了,抬头看一眼这座大厦,这条街道,待了三年了,对于路痴的我来说,陌生又熟悉⋯ 依旧分不清东南...
    小武同学阅读 97评论 0 1
  • 看着又一批大学生迈入校门,教学区的自习室里又多了一大批同学埋头苦干,为了考研不舍昼夜。 回宿舍的路上,他们讨论着高...
    西贝家的小猫咪阅读 130评论 0 0
  • 谈判是有利益交换的说服。 谈判的第一场景:获取信息,用交流沟通的方式询问对方从哪知道自己的供应信息的,判断对方的期...
    光爸阅读 77评论 0 1
  • 为什么有的人说话不算数
    右心疼阅读 62评论 0 0