V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
duanzs
V2EX  ›  Node.js

js 正则处理掉字符串中图片 base64 码

  •  
  •   duanzs · 2019-07-19 18:39:48 +08:00 · 5182 次点击
    这是一个创建于 1714 天前的主题,其中的信息可能已经有所发展或是发生改变。

    css 样式字符串(很长,仅仅 10w 字符),里面很多 icon (图片)的 base64 url 字符,希望正则处理掉 处理范围:经过观察 base64 url 都是包裹在 'url(' 和 ')' 中,用正则替换成'url()',注意范围

    data 样例 1 url(data:image/png;base64,iVBOR.........QmCC)

    data 样例 2 url('http://mcsstest.jd.com/static/css/data:image/png;base64,iVB//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+dQ58GAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAJXRFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyBNWCAyMDA0h3aszwAAG+FJREFUeJztnX9gk8XdwB8lu9hqLGbt001kaJhdDEbNkPijoWnSBWTShshSoJG4ufh22BlsJ6sd2BHlbecIUxvSKoK+OLCoIMWO8iOZYtcNeZmOAkV5fKmmrU72UmHqO/Pne/f8SO7uuadABWRz3zZPnjyffO++d9/nnufunrsLBySxQQGEcGhjDNvSUGxhI0WMdR0OUTrqjDhptYU7HDZRHB1hnNh0oTzlUx5BQLAgLx2Ckk6upwgoyHNIHxw0Kc4LIh3jYIom4by6EBAEaJyaeLy61lbToFFNhGsWo/Sk1cRkrquDO61fWr/h8UV9VhZSemlwAAAABJRU5ErkJggg==');

    自己写了一个但是会删除 base64 之外(图片 url 能替换掉,但有误杀,貌似范围太大还是怎么着) replace(/(?:(?:(|url()[^)]*))/g, 'url()') 错误示例 'rgb(240, 80, 80);'.replace(/(?:(?:(|url()[^)]*))/g, 'url()') "rgburl();"

    求指点

    2 条回复    2019-07-23 08:54:44 +08:00
    xiangyuecn
        1
    xiangyuecn  
       2019-07-20 09:54:33 +08:00
    正则写的真丑。线索:

    1. url(...) 肯定会出现'('和')'字符,里面的内容 99.999%不会出现'('和')'字符,用')'来识别结束部分

    2. url 里面如果出现'data:',99.999%是 data url,用'data:image'来识别这种 css 的内联图片

    写这个正则表达式哪有那么复杂,还会把 rgba?给匹配了😂
    mystorp
        2
    mystorp  
       2019-07-23 08:54:44 +08:00
    混脸熟。

    这个问题就是正则表达式替换,只要正则写对了,剩下就是处理好捕获的内容

    let re = /url\(([^\)]+)\)/g;

    cssText.replace(re, function(_, dataUrl){
    // 这里的 dataUrl 需要分割一下,如果你不想要它,忽略
    return "";
    })
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1010 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:55 · PVG 03:55 · LAX 12:55 · JFK 15:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.