KITASENJU DESIGN BLOG

memo, html, javascript, unity

hex文字列をrgb値に

function hexToRgb(hex) {
    // '#'を取り除く
    hex = hex.replace(/^#/, "");

    // 3桁の場合は6桁に拡張
    if (hex.length === 3) {
        hex = hex.split('').map(char => char + char).join('');
    }

    // 6桁の16進数表現を捕捉する正規表現
    let result = /^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    
    // 正規表現にマッチする場合、RGB値に変換
    if (result) {
        return {
            r: parseInt(result[1], 16), // R要素を16進数から10進数に変換
            g: parseInt(result[2], 16), // G要素を16進数から10進数に変換
            b: parseInt(result[3], 16)  // B要素を16進数から10進数に変換
        };
    }

    // 正規表現にマッチしない場合、nullを返す
    return null;
}

// 使用例
console.log(hexToRgb("#fff"));    // { r: 255, g: 255, b: 255 }
console.log(hexToRgb("#ffffff")); // { r: 255, g: 255, b: 255 }
"FOOTER"