Meinetwegen. Deine Lösung ist schlanker. Ich kann aber noch was nachlegen:
Zusammen mit der Regel, dass im CSS auch Angaben wie #fa6
erlaubt sind (und wie #ffaa66
behandelt werden) ergibt sich:
<script>
function Eingabe() {
var s = document.getElementById( "numbers" ).replace( '#', '' );
var re1 = /^[0-9A-F]{6}$/
var re2 = /^[0-9A-F]{3}$/
if ( re1.test( s ) ) {
var red = parseInt( s.substr(0,2), 16 );
var green = parseInt( s.substr(2,2), 16 );
var blue = parseInt( s.substr(4,2), 16 );
alert ('r=' + red + ' g=' + green + ' b=' + blue );
} else if ( re2.test( s ) ){
var red = parseInt( s[0]+s[0], 16 );
var green = parseInt( s[1]+s[1], 16 );
var blue = parseInt( s[2]+s[2], 16 );
alert ('r=' + red + ' g=' + green + ' b=' + blue );
} else {
alert ( 'Ups. Ungueltige Eingabe' );
}
}
</script>
<input type="text" pattern='[0-9A-Fa-f]{6}|#[0-9A-Fa-f]{6}|[0-9A-Fa-f]{3}|#[0-9A-Fa-f]{3}' id="numbers" placeholder="hexcode, 6-stellig">
<button onclick='Eingabe()'>Klick</button>