从RGB字符串中收集数字

时间:2017-09-16 13:30:15

标签: javascript

因此,在我的网页上,我有来自用户字符串的输入

rgb(0, 128, 192)

提交时我想从这个字符串中收集数字并安慰它。

console.log(first_number);
console.log(second_number);
console.log(third_number);

我该怎么做?

3 个答案:

答案 0 :(得分:2)

使用简单的正则表达式/\d+/g来匹配数字:

var string = "rgb(0, 128, 192)";

var numbers = string.match(/\d+/g);     // get the numbers

if(numbers && numbers.length === 3) {   // if there is numbers in the string, and there is exactly 3
  console.log(numbers);                 // log them
}

答案 1 :(得分:1)

从字符串中删除rgb(),将其拆分为,,然后将这些部分解析为整数:

function getRGBFromString(str){
    var parts = str.slice(4,-1).split(',')
    return [parseInt(parts[0]),parseInt(parts[1]),parseInt(parts[2])]
}

答案 2 :(得分:0)

您可以像这样使用正则表达式:

function getRGBNumbers(rgbString) {
    var regex = /rgb\(([0-9]{1,3})\,[ ]?([0-9]{1,3})\,[ ]?([0-9]{1,3})\)/;
    var match = regex.exec(rgbString);

    // Invalid rgb string
    if (match === null) {
        return null;
    }

    // Remove first element of the array that contains all numbers
    match.shift();

    return match;
}

var rgbNumber = getRGBNumbers("rgb(0, 128, 192)");
console.log(rgbNumber[0]); // 0
console.log(rgbNumber[1]); // 128
console.log(rgbNumber[2]); // 192

var rgbNumber2 = getRGBNumbers("rgb(5,100,255)");
console.log(rgbNumber2[0]); // 5
console.log(rgbNumber2[1]); // 100
console.log(rgbNumber2[2]); // 255

var rgbNumber3 = getRGBNumbers("rgb(5,255)");
if (rgbNumber3 === null) {
    console.log("Invalid input string");
}