Derse geri dön

HTML renkler için düzenli ifade (regexp)

#ABCDEF şeklinde yazılmış HTML-renklerini aramak için bir düzenli ifade oluşturun: önce # ve ardından 6 tane onaltılık karakter gelmesi lazım.

Bir kullanım örneği:

let regexp = /...senin duzenli ifaden.../

let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2 #12345678";

alert( str.match(regexp) )  // #121212,#AA00ef

NOT: Bu görevde #123 veya rgb(1,2,3) vb. diğer renk formatlarına ihtiyacımız yoktur.

# ve ardından 6 tane onaltılık karakterin gelmesine ihtiyacımız var.

Onaltılık bir karakter [0-9a-fA-F] şeklinde ifade edilebilir. Veya eğer i bayrağını kullanırsak, [0-9a-f] şeklinde ifade edilebilir.

Daha sonrasında {6} nicelik belirtecini kullanarak bunlardan 6 tanesini seçebiliriz.

Sonuç olarak, /#[a-f0-9]{6}/gi düzenli ifadesine sahibiz.

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

Buradaki sorun daha uzun değerleri de bulmasıdır:

alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #12345678

Bunu çözmek için, sona \b ekleyebiliriz:

// renk
alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456

// bir renk değil
alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null