返回課程

以 #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

P.S. 這應該是剛好 3 或 6 個十六進位數字。例如 #abcd 等有 4 個數字的值不應比對成功。

用於搜尋 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