回到课程

针对 HTML 颜色的正则表达式

创建一个正则表达式来查找格式为 #ABCDEF 的 HTML 颜色值:首个字符是 #,后面紧接着的是六位的十六进制字符。

用例:

let regexp = /...你的正则表达式.../

let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2 #12345678";

alert( str.match(regexp) )  // #121212,#AA00ef

P.S. 在这个任务中,我们不需要其他的颜色格式,例如 #123rgb(1,2,3) 等。

我们需要寻找首个字符是 #,后面紧接着的是六位的十六进制字符的匹配项。

一个十六进制字符可以描述为 [0-9a-fA-F]。如果我们使用修饰符 i,那么只需要 [0-9a-f]

然后我们可以使用量词 {6} 来查找其 6 个字符。

那么,我们得到正则表达式:/#[a-f0-9]{6}/gi

let regexp = /#[a-f0-9]{6}/gi;

let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2"

alert( str.match(regexp) );  // #121212,#AA00ef

问题是其从更长的序列中匹配了颜色值:

alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #123456

为了解决这个问题,我们可以在末尾加上 \b

// 颜色值
alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456

// 不是颜色值
alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null