验证rgb/rgba颜色值的JavaScript正则无法匹配小数透明度问题
正则匹配问题排查与修复
核心问题定位
你编写的正则中alpha通道的匹配规则(0?\.\d|[01])存在限制:仅允许小数点后存在1位数字,因此.75、0.75这类小数点后有2位的alpha值会匹配失败,这就是第4、5项无法命中的原因。
修复后正则
^rgba?\((([+-]?\d+(\.\d+)?),\s*){2}[+-]?\d+(\.\d+)?(,\s*([+-]?(0?\.\d+|[01](\.0+)?)))?\)$
修改点说明
- 将原规则中的
0?\.\d调整为0?\.\d+,允许小数点后存在多位数字,适配.75、0.75这类值 - 补充
[01](\.0+)?匹配规则,可兼容1.0、0.000这类合法的alpha整数值写法 - 保留了和RGB部分一致的可选正负号匹配逻辑,符合你原正则的设计习惯
该正则可正常匹配你给出的全部7组测试用例。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

