回到课程
本资料仅提供以下语言版本:English。请 帮助我们 将其翻译为 简体中文 版本。

查找颜色,格式为 #abc 或 #abcdef

编写一个正则来匹配 #abc#abcdef 格式的颜色。即:# 后接三位或六位 16 进制数。

使用案例:

let reg = /your regexp/g;

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

alert( str.match(reg) ); // #3f3 #AA0ef

注:必须为三位或六位,#abcd 这种不应该被匹配。

查找三位颜色 #abc 的正则表达式为:/#[a-f0-9]{3}/i

我们可以添加额外三位 16 进制数,不多也不少。这三位可能有,也可能没有。

最简单的方式 —— 直接附加上去:/#[a-f0-9]{3}([a-f0-9]{3})?/i

但是,还有一种更讨巧的方法:/#([a-f0-9]{3}){1,2}/i

这里我们把正则 [a-f0-9]{3} 放置在括号内,并且应用量词 {1,2}

实际操作:

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

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

alert( str.match(reg) ); // #3f3 #AA0ef #abc

不过这里有个小问题:这个模式会在 #abcd 中找到 #abc。为了避免这种情况,我们可以在最后加上 \b

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

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

alert( str.match(reg) ); // #3f3 #AA0ef