查找格式为 #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