Учитывая строку, содержащую цветовые коды, я хочу сопоставить коды и заменить их на <span style='color: code'>
с тем же цветным кодом, чтобы получить цветную строку HTML.
это то, что я уже пробовал:
function parseColors(str) {
let reg = /#[0-9a-f]{6}/gi
let arr = str.match(reg)
if (arr) {
arr.forEach(m => {
str = str.replace(m, `<span style='color: ${m}'>`)
str += "</span>"
})
}
return str
}
console.log(parseColors(
"#abcdefthe, #ff0000 red #abcdef fox"
))
// prints:
// <span style='color: <span style='color: #abcdef'>'>the, <span style='color: #ff0000'> red #abcdef fox</span></span></span>
проблема в том, что он дважды заменяет один и тот же цвет, поэтому сначала #abcdef будет тегом <span>
, но затем он заменяет цвет в теге другим <span>