2017-09-27 58 views
-1

我使用的是當前代碼,這裏建議在SO上從「rgb(0,0,0)」這樣的字符串中獲取RGB值,但它也可以是「 RGB(0,0,0096)」,所以現在我也需要獲取alpha值JS:從字符串中獲取RGBA值

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; 
} 

回答

2

你原來的正則表達式是已經考慮到alpha(仔細看它,你會看到四組數字之間有逗號,其中第四個是可選的; al所以請注意argba附近開始是可選的,因爲它後面的?)。您可以通過查看match[4]來告訴您是否得到了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]]; 
    if (match[4]) {   // *** 
     arr.push(match[4]); // *** 
    }      // *** 
    return arr; 
} 
+0

ooops ...謝謝!!!我仍然可以不消化REGEX!謝謝 – Francesco