回到课程

找出形如 #abc 或 #abcdef 的颜色值

编写一个匹配 #abc#abcdef 格式的颜色值的正则表达式。即:# 后跟着 3 个或 6 个十六进制的数字。

用例:

let regexp = /你的正则表达式/g;

let str = "color: #3f3; background-color: #AA00ef; and: #abcd";

alert( str.match(regexp) ); // #3f3 #AA00ef

P.S. 必须只匹配 3 位或 6 位十六进制数字的颜色值。不应该匹配 4 位数字的值,例如 #abcd

查找 # 号后跟着 3 位十六进制数的颜色值 #abc 的正则表达式:/#[a-f0-9]{3}/i

我们可以再添加 3 位可选的十六进制数字。这样刚好,不多不少。只匹配 # 号后跟着 3 位或 6 位十六进制数字的颜色值。

我们使用量词 {1,2} 来实现:所以正则表达式为 /#([a-f0-9]{3}){1,2}/i

这里将模式 [a-f0-9]{3} 用括号括起来,以在其外面应用量词 {1,2}

用例:

let regexp = /#([a-f0-9]{3}){1,2}/gi;

let str = "color: #3f3; background-color: #AA00ef; and: #abcd";

alert( str.match(regexp) ); // #3f3 #AA00ef #abc

这里存在一个小问题:上面的模式会匹配 #abcd 中的 #abc。为避免这一问题,我们可以在最后添加 \b

let regexp = /#([a-f0-9]{3}){1,2}\b/gi;

let str = "color: #3f3; background-color: #AA00ef; and: #abcd";

alert( str.match(regexp) ); // #3f3 #AA00ef