function setHalfOpacity(rgbaString) { // 验证rgbaString是否符合rgba(r,g,b,a)的格式 // 这里只做了简单的验证,可能需要更严格的验证逻辑 if (!/^rgba\(\d+,\d+,\d+,(0\.\d{1,2}|1(?:\.0{1,2})?)\)$/.test(rgbaString)) { throw new Error('Invalid rgba string format'); } // 使用正则表达式提取RGB值和alpha值 const [, red, green, blue, alpha] = rgbaString.match(/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(0\.\d+|1(?:\.0{1,2})?)\)$/); // 将提取的值转换为浮点数(如果它们不是已经是的话) const redFloat = parseFloat(red); const greenFloat = parseFloat(green); const blueFloat = parseFloat(blue); const alphaFloat = parseFloat(alpha); // 这里虽然转换了,但我们不直接使用它 // 返回新的rgba字符串,其中alpha被设置为0.5 return `rgba(${red}, ${green}, ${blue}, 0.5)`;
} // 使用示例
const a = 'rgba(49, 61, 57, 1)';
const halfOpaqueColor = setHalfOpacity(a);
console.log(halfOpaqueColor); // 输出: rgba(49, 61, 57, 0.5)