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