javascript - JS 用新的随机 HEX 颜色替换每种 HEX 颜色
问题描述
最近我问过如何用随机的十六进制颜色替换一千个#FFF。解决方案是运行以下代码:
var fs = require('fs')
fs.readFile('stars.css', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
var result = data.replace(/#FFF/g, () => '#' + ("000000" + Math.random().toString(16).slice(2, 8).toUpperCase()).slice(-6));
fs.writeFile('stars.css', result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
我正在寻找一种方法来检测文件中的任何 HEX 颜色,并将其替换为新的随机 HEX 颜色。这是我尝试过的:
var result = data.replace(/^#[0-9A-F]{6}$/i.test('#AABBCC'), () => '#' + ("000000" + Math.random().toString(16).slice>
此外,("000000" + Math.random().toString(16).slice(2, 8).toUpperCase()).slice(-6)
这是我获得 HEX 颜色的唯一方法,因为Math.floor(Math.random()*16777215).toString(16)
方法在我的网页上引发错误
解决方案
替换data.replace(/^#[0-9A-F]{6}$/i.test('#AABBCC'), () => '#' + ("000000" + Math.random().toString(16).slice(2, 8).toUpperCase()).slice(-6));
为:
data.replace(/#[0-9A-F]{3,6}/ig, () => `#${Math.floor(Math.random()*16777215).toString(16)}`);
我在您的正则表达式中添加了标志,并找到了一种更短的方法来从这里global
生成随机颜色,除了删除不必要的和删除/ (匹配字符串开头).test
^
$
推荐阅读
- xamarin - 我的 Xamarin.Forms 应用程序是正确的项目类型吗?
- python - subprocess.checkoutput() 给出错误 No such file or directory: 'netsh' in Orange PI
- android - 请求 ACCESS_BACKGROUND_LOCATION 没有显示任何提示
- modelica - 验证 Modelica smoothOrder 注释的正确性
- r - 如何将列更改为连续数据以将其绘制在 ggplot2 上?
- graph - 没有 Delaunay 的 Voronoi 应用程序?
- bitwise-operators - 面具之外的一切都等于
- c - 使用 arduino nano 上的簧片开关计算磁铁外观
- reactjs - events.js:182 抛出错误;// 未处理的 'error' 事件和无法读取未定义的属性 'has'
- tmux - 如何在 tmux 中发送功能键?