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