javascript - 将字符串中的十六进制颜色代码替换为彩色 html 标签

标签 javascript regex

给定一个包含颜色代码的字符串,我想匹配这些代码并将其替换为 <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> 替换标签中的颜色

最佳答案

不是最好的解决方案,但它可以适本地添加结束标记。

const HexPattern = /(#[0-9a-f]{6})(\s*[\w,]+\s*)/gi

function parseColors(str) {
  return str.replace(HexPattern, (s, g0, g1) => `<span style="color:${g0}">${g1}</span>`)
}

let html = parseColors("#abcdefthe, #ff0000 red #abcdef fox")

console.log(html)
document.body.innerHTML = html

关于javascript - 将字符串中的十六进制颜色代码替换为彩色 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55811113/

相关文章:

用于数字的 Javascript 正则表达式

javascript - 停止其他 onclick 事件

python - 带有 Pandas 的 REGEX 过滤器(任何数字组合后跟 'plus' 符号)

javascript - JavaScript 中的 Ruby 样式 block ?

JavaScript/jQuery - onhashchange 事件解决方法

php - 使用 regex/preg_match() 检查一组十进制坐标是否有效

mysql - 在 MySql 正则表达式查询中使用变量

javascript - python 到 javascript 正则表达式

c# - Javascript 执行 .cs 中的代码?

javascript - ajax调用结束时window.open不起作用