JS:从字符串中获取RGBA值

时间:2017-09-27 14:58:29

标签: javascript

我正在使用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;
}

1 个答案:

答案 0 :(得分:2)

您的原始正则表达式已经允许使用alpha(仔细查看,您会看到四组数字之间带逗号,其中第四个是可选的;另请注意argba附近的?是可选的,因为它后面是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; }

来判断您是否获得了alpha
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