返回课程

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

编写一个正则表达式,匹配格式为 #abc#abcdef 的颜色。也就是说:# 后面跟着 3 或 6 个十六进制数字。

使用示例

let regexp = /your regexp/g;

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

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

注意:这应该是正好 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