Javascript 不使用regExp验证RGB颜色

Javascript 不使用regExp验证RGB颜色,javascript,Javascript,我的代码给出了意外的输出。如果输入为RGB(“RGB(255255)”),我将尝试返回布尔值。 谁能告诉我哪里出了问题 function checkRGB(input) { var i, elem, validRGB; validRGB = false; // if input is within “rgb(”x,x,x“)“, should continue to execute if((input.slice(0, 4) === "rgb(") && (inp


我的代码给出了意外的输出。如果输入为RGB(“RGB(255255)”),我将尝试返回布尔值。 谁能告诉我哪里出了问题

function checkRGB(input) {
  var i, elem, validRGB;
  validRGB = false;
  // if input is within “rgb(”x,x,x“)“, should continue to execute
  if((input.slice(0, 4) === "rgb(") && (input.slice(-1) === ")")) {

   // Getting only "x, x, x," elements and make them array;
    elem = input.slice(4, -1).split(",");

    // Looping through array elements
    for(i = 0; i < elem.length; i++) {
      elem[i] = parseInt(elem[i]);

      // if array elements > 0 and <= 255 , return true;
      if((elem[i] >= 0 && elem[i] <= 255)) {
        validRGB = true;
      }
    }

  }
  return validRGB;
};

checkRGB("rgb(0,0,300)"); // returns true;  should be false;
checkRGB("rgb(0,-1,0)"); // returns true;  should be false;
功能检查RGB(输入){
变量i、elem、validRGB;
validRGB=假;
//如果输入在“rgb(“x,x,x”)”内,则应继续执行
if((input.slice(0,4)==“rgb”()&&(input.slice(-1)==”)){
//只获取“x,x,x”元素并使其成为数组;
elem=input.slice(4,-1).split(“,”);
//通过数组元素循环
对于(i=0;i//如果数组元素>0且=0&&elem[i]使用
else
语句并
break
循环

if ((elem[i] >= 0 && elem[i] <= 255)) {
  validRGB = true;        
} 
else {
  validRGB = false;
  break;
}

if((elem[i]>=0&&elem[i]返回值由最后一个elem确定

+也许我的回答还不够 问题是,您正在检查三个值。 在示例rgb(0,0300)中,第二个循环使validRGB为true,第三个循环将被跳过,因为300不大于0也不小于255

另一方面,“rgb(0,-1,0)”,第二个循环使validRGB变为false。但在第三个循环中它变为true。

试试这段代码


根据您的代码,如果颜色(RGB中的B)的最后一个是
255
and',甚至只是返回。既然我看到了,让我再问一次,您为什么要做这些检查?是为了得到有效的CSS值吗?在这种情况下,不要自己做,有更简单的方法。您不在乎
rgba()
?还要注意,即使当前错误已修复,您仍然会出现误报,如
checkRGB('rgb(0foo,1bar,2baz)
。您应该将其转换为数字,而不是调用
parseInt
。但这对于同样有效的符号
rgb(r%,g%,b%)
。您的代码不正确,无法检查警报(checkRGB(“rgb(0.1,0,30)”);这个答案是根据OP问题写的。这不是我自己的答案。我只是建议对他提出的问题进行修改。