找出形如 #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