torna alle lezioni

Trovate un colore nel formato #abc o #abcdef

Scrivete un’espressione regolare che trovi i colori nel formato #abc o #abcdef. In altre parole: # seguito da 3 o 6 cifre esadecimali.

Esempio d’uso:

let regexp = /your regexp/g;

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

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

P.S. Dovrebbe trovare esattamente 3 o 6 cifre esadecimali. I valori con 4 cifre, come #abcd, non dovrebbero dar luogo a corrispondenza.

L’espressione regolare per cercare il codice di un colore di 3 cifre #abc è : /#[a-f0-9]{3}/i.

Possiamo aggiungere esattamente 3 ulteriori cifre esadecimali opzionali. Non abbiamo bisogno di altro. Il codice di un colore è composto da 3 o 6 cifre.

Usiamo il quantificatore {1,2} a questo scopo: avremo /#([a-f0-9]{3}){1,2}/i.

In questo caso il pattern [a-f0-9]{3} è racchiuso tra parentesi per applicare ad esso il quantificatore {1,2}.

Eccolo in azione:

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

C’è un piccolo problema adesso: il pattern #abc trovato in #abcd. Per evitarlo possiamo aggiungere \b alla fine:

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