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

时间:2016-11-03 23:44:31

标签: php regex

我试图匹配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作为整个匹配部分,但任何帮助都将受到赞赏。

3 个答案:

答案 0 :(得分:0)

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

编辑评论

答案 1 :(得分:0)

这对你有用吗?

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

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

答案 2 :(得分:0)

试试这个:

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

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

希望这有效。