Nodejs 正则处理掉字符串中图片 base64 码
Nodejs 正则处理掉字符串中图片 base64 码
css 样式字符串(很长,仅仅 10w 字符),里面很多 icon (图片)的 base64 url 字符,希望正则处理掉 处理范围:经过观察 base64 url 都是包裹在 ‘url(’ 和 ‘)’ 中,用正则替换成’url()’,注意范围
data 样例 1 url(data:image/png;base64,iVBOR.........QmCC)
自己写了一个但是会删除 base64 之外(图片 url 能替换掉,但有误杀,貌似范围太大还是怎么着) replace(/(?:(?:(|url()[^)]*))/g, 'url()') 错误示例 'rgb(240, 80, 80);'.replace(/(?:(?:(|url()[^)]*))/g, 'url()') "rgburl();"
求指点
正则写的真丑。线索:
1. url(…) 肯定会出现’(‘和’)‘字符,里面的内容 99.999%不会出现’(‘和’)‘字符,用’)‘来识别结束部分
2. url 里面如果出现’data:’,99.999%是 data url,用’data:image’来识别这种 css 的内联图片
写这个正则表达式哪有那么复杂,还会把 rgba?给匹配了😂
混脸熟。
这个问题就是正则表达式替换,只要正则写对了,剩下就是处理好捕获的内容
let re = /url(([^)]+))/g;
cssText.replace(re, function(_, dataUrl){
// 这里的 dataUrl 需要分割一下,如果你不想要它,忽略
return “”;
})
在处理 Node.js 中的字符串时,如果希望使用正则表达式移除所有图片 Base64 编码,可以通过匹配 Base64 编码的格式来实现。Base64 编码的图片通常以 data:image/png;base64,
、data:image/jpeg;base64,
等格式开头,后面跟着编码后的字符串。
以下是一个示例代码,展示了如何使用正则表达式在 Node.js 中处理掉字符串中的图片 Base64 编码:
const str = `
这是一个测试字符串,包含一张图片:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Image">
和一些文本内容。
`;
// 匹配 Base64 图片的正则表达式
const base64ImagePattern = /<img\s+[^>]*src="data:image\/[^;]+;base64,[^"]*"[^>]*>/g;
// 使用正则表达式替换匹配的内容为空字符串
const resultStr = str.replace(base64ImagePattern, '');
console.log(resultStr);
在这个例子中,正则表达式 <img\s+[^>]*src="data:image\/[^;]+;base64,[^"]*"[^>]*>
匹配了所有符合 Base64 图片格式的 <img>
标签。str.replace(base64ImagePattern, '')
则将这些匹配到的内容替换为空字符串,从而移除了字符串中的图片 Base64 编码。
这种方法能够有效地处理大多数情况下的 Base64 图片移除,但在实际应用中可能需要根据具体情况调整正则表达式。