在方括号内匹配十六进制颜色


Match hex color inside square brackets

我试图在BBCode颜色标签内匹配一个十六进制颜色,只有颜色,但有困难隔离只是颜色。

样本BBCode:

[b][color=#ffffff]test text[/color][/b]

我能想到的最好的正则表达式是:

/'[[^[]*?(#[A-Fa-f0-9]{6}|#[A-Fa-f0-9]{3})[^]]*?']/

它匹配开始的颜色标签,但我希望更具体的东西。我一直在尝试用一些积极的向前看和向后看,但我什么也没做。

/(?='[)(#[A-Fa-f0-9]{6}|#[A-Fa-f0-9]{3})(?<='])/

我希望把它降到#ffffff作为整个匹配的部分,但任何帮助都会很感激。

/#[a-fA-F0-9]{6}/

编辑评论

这对你有用吗?

(?<='[color=)(#[a-f0-9]{3,6})(?='])

使用后视((?<='[color=)),颜色捕获组((#[a-f0-9]{3,6}))和前视((?=']))。

试试这个:

/color=#(['da-fA-F]{2})(['da-fA-F]{2})(['da-fA-F]{2})/

查找任何具有color=和十六进制颜色代码的内容。