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