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