Regexp per la ricerca di colori espressi in formato HTML
Si crei un’espressione regolare per trovare i colori HTML in notazione #ABCDEF: all’inizio un carattere # quindi 6 cifre esadecimali.
Un esempio di uso:
let reg = /...la tua regexp.../
let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2 #12345678";
alert( str.match(regexp) ) // #121212,#AA00ef
P.S. In questo esercizio non � richiesto di intercettare i colori espressi anche in altri formati come: #123 o rgb(1,2,3) ecc.
Dobbiamo cercare il carattere # seguito da 6 cifre esadecimalis.
Possiamo descrivere una cifra esadecimale con il [0-9a-fA-F], oppure, usando il flag i possiamo usare [0-9a-f].
Dunque si cerchino 6 pattern usando il quantificatore {6}.
Il risultato sar� l’espressione regolare: /#[a-f0-9]{6}/gi.
let regexp = /#[a-f0-9]{6}/gi;
let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2"
alert( str.match(regexp) ); // #121212,#AA00ef
Il problema � che cos� si trova il colore anche in sequenze pi� lunghe di 6 caratteri:
alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #123456
Per sisolvere tale problema si pu� aggiungere \b in coda all’espressione:
// Un valore corrispondente colore
alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456
// Un valore non corrispondente a un colore
alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null