【问题标题】:how to replace url in css using regexp (javascript)如何使用正则表达式(javascript)替换css中的url
【发布时间】:2011-04-05 12:13:55
【问题描述】:
var text = '#anything {behavior:url("csshover.htc");}'; //iam using " with url
text += "#anything {background:transparent url('img.png') no-repeat;}"; //iam using ' with url
text += "#anything {background-image:url('ok.jpg');}";

结果

#anything {
    behavior:url("#");
}

#anything {
    background:transparent url('#') no-repeat;
}

#anything {
    background-image:url('#');
}

我该怎么做?

【问题讨论】:

    标签: javascript html css regex url


    【解决方案1】:

    如果要获取带单引号的 URL,请将下面的 # 替换为 $2

    var text = '#anything {behavior:url("csshover.htc");}'; //iam using " with url
    text += ".regleft {background:transparent url('img.png') no-repeat;}"; //iam using ' with url
    text += "#anything {background-image:url('ok.jpg');}";
    text = text.replace(/url\((['"])(.+?)\1\)/g, "url('#')");
    

    【讨论】:

    • text = text.replace(/url\((['"])(.+?)\1\)/g, "url('#')"); 谢谢,这段代码在我的项目中帮助了我。
    • 您的正则表达式清除了url() 部分,因此您只剩下'#'
    • 我建议添加 ?在 ['"] 之后,您还可以获得不带引号的网址。'url(http://blabla.com)'.replace(/url\((['"]?)(.+?)\1\)/g, "$2");
    【解决方案2】:

    对于其他来这里寻找同时保留空白引号的通用解决方案的人:

    //Test data
    var css = 'one url(two) url(\'three\') url("four")  url  (  five  )';
    
    css = css.replace(
    
        // Regex
        /(url\W*\(\W*['"]?\W*)(.*?)(\W*['"]?\W*\))/g,
    
        // Replacement string
        '$1*$2*$3'
    
    );
    
    console.log(css);
    

    输出

    one url(*two*) url('*three*') url("*four*")  url  (  *five*  ) 
    

    【讨论】:

      【解决方案3】:

      示例: http://jsfiddle.net/GcsLQ/2/

      var text = '#anything {behavior:url("csshover.htc");}'; //iam using " with url
      text += "#anything {background:transparent url('img.png') no-repeat;}"; //iam using ' with url
      text += "#anything {background-image:url('ok.jpg');}";
      
      
      text = text.replace(/url\([^)]+\)/g, 'url("#")');
      

      如果您也想要空格格式,请执行以下操作:

      示例: http://jsfiddle.net/GcsLQ/3/

      var text = '#anything {behavior:url("csshover.htc");}'; //iam using " with url
      text += "#anything {background:transparent url('img.png') no-repeat;}"; //iam using ' with url
      text += "#anything {background-image:url('ok.jpg');}";
      
      
      text = text.replace(/url\([^)]+\)/g, 'url("#")')
          .replace(/{/g,'{\n\t')
          .replace(/}/g,'\n}\n');
      

      编辑:为替换的 URL 添加引号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        • 2017-05-25
        • 1970-01-01
        • 2013-01-22
        • 2014-01-26
        相关资源
        最近更新 更多