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

问题描述:

我试图匹配一个BBCode颜色标签内的十六进制颜色和只有颜色,但没有隔离只是颜色的问题。方括号内的十六进制颜色匹配

样品BB代码:

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

我已经能够拿出最好的正则表达式是这样的:

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

它打开颜色标记只有它匹配和,但我希望为更具体的东西。我一直在尝试使用一些积极的lookaheads和lookbehinds,但我无法快速。

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

我希望把它归结为#ffffff作为整个匹配的部分,但任何帮助将不胜感激。

+0

'\ [color = \#(。*)\] \ b'? (*因为它是可怕的ahhhhh *) – Darren

+0

有时候之间可能有空格,所以我希望避免基础是围绕颜色。 – NicholasJohn16

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

编辑的评论

+0

我需要匹配标签。 – NicholasJohn16

这是否对你的工作?

(?<=\[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=什么和十六进制颜色代码。

希望这个工程。