Trouver des couleurs au format #abc ou #abcdef
Écrire une RegExp qui correspond à des couleurs au format #abc ou #abcdef. C’est à dire : # suivi par 3 ou 6 chiffres hexadécimaux.
Exemple d’utilisation :
let regexp = /your regexp/g;
let str = "color: #3f3; background-color: #AA00ef; and: #abcd";
alert( str.match(regexp) ); // #3f3 #AA00ef
P.S. Cela doit être exactement 3 ou 6 chiffres. Des valeurs avec 4 chiffres, comme #abcd, ne doivent pas ressortir.
Une regexp pour chercher une couleur à trois chiffres #abc: /#[a-f0-9]{3}/i.
Nous pouvons y ajouter les 3 autres chiffres optionnels. Nous n’avons pas besoin de plus ou moins. La couleur a soit 3 ou 6 chiffres.
Utilisons le quantificateur {1,2} pour obtenir /#([a-f0-9]{3}){1,2}/i.
Ici le schéma [a-f0-9]{3} est entouré de parenthèses pour lui appliquer le quantificateur {1,2}.
En pratique :
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
Il reste un petit problème ici : car ce schéma trouve #abc dans #abcd. Pour éviter cela nous pouvons ajouter à la fin \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