我正在使用SO上建议的当前代码,从“rgb(0,0,0)”这样的字符串中获取RGB值,但也可以是“rgb(0,0,0,096)” ,所以现在我需要得到alpha值
function getRGB(str) {
var match = str.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.\d?))\))?/);
arr = [match[1], match[2], match[3]];
return arr;
}
我在下面尝试了这段代码,但它不起作用
function getRGBA(str) {
var match = str.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.\d?))\))?/);
arr = [match[1], match[2], match[3], match[4]];
return arr;
}
答案 0 :(得分:2)
您的原始正则表达式已经允许使用alpha(仔细查看,您会看到四组数字之间带逗号,其中第四个是可选的;另请注意a
在rgba
附近的?
是可选的,因为它后面是match[4]
。您可以通过查看function getRGB(str) {
var match = str.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.\d?))\))?/);
arr = [match[1], match[2], match[3]];
if (match[4]) { // ***
arr.push(match[4]); // ***
} // ***
return arr;
}
:
GG = matrix( (1:9)*0, 3, 3);
G = function(i,j, x){
if (missing(x)){
return(GG[i+1, j+1]);
}
CC = GG;
CC[i+1, j+1] = x;
GG <<- CC; }
>G(0,2,5) # for manipulate G on position (0,2) (or GG on position (1,3))
# and set the entry to value equal 5
> GG;
[,1] [,2] [,3]
[1,] 0 0 5
[2,] 0 0 0
[3,] 0 0 0
> G(0,2);
[1] 5